IOC(inverse of control)控制反轉,是spring提供的非常優秀的一種特性,這種特性使得在項目中,所有對象的實例都交由spring去創建,管理。為什么要這么做呢,假使我們脫離spring,在開發的過程中,需要新建實例的時候自己去new,那么組件之間的耦合度會非常高,在一個業務處理類中,某個對象就寫死引用某個實例,一旦有較大的業務變更,需要修改的地方可能會多的不敢想象,如果文檔,代碼和注釋的維護較差,那么業務變更簡直就是噩夢。spring的IOC特性就助力實現了“高內聚,低耦合”的這種設計理念。
記錄一下平時在使用spring時的一些技巧和心得,先說明一下測試環境。
環境如下
系統:64位win7

測試環境:
先從一個helloworld的簡單案例開始吧
新建一個maven項目,選擇

其實不論使用哪個框架技術,都無非三步走,import,config,run,首先,我們import
因為使用maven來管理項目,所以直接添加spring的依賴到pom.xml
1 <dependency>
2 <groupId>org.springframework</groupId>
3 <artifactId>spring-core</artifactId>
4 <version>3.0.5.RELEASE</version>
5 </dependency>
6
7 <dependency>
8 <groupId>org.springframework</groupId>
9 <artifactId>spring-context</artifactId>
10 <version>3.0.5.RELEASE</version>
11 </dependency>
之后,我們開始config,作為一個基本IOC演示,只需要定義工廠的配置。定義一個beans.xml文件,置于src下。其中bean標簽就是定義beanId和待注入對象實例之間的映射。
就是“用這個id取對象實例,你會取到class的對象實例”
1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://www.springframework.org/schema/beans
5 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
6
7 <bean id="helloSpring" class="demo.model.Demo"/>
8
9 </beans>
演示類
1 package demo.model;
2
3 public class Demo {
4
5 public Demo() {
6 }
7
8 public void hello(){
9 System.out.println("hello");
10 }
11 }
12
測試類
1 package org.duyt.test;
2
3 import org.duyt.model.Demo;
4 import org.junit.Test;
5 import org.springframework.beans.factory.BeanFactory;
6 import org.springframework.context.support.ClassPathXmlApplicationContext;
7
8 public class SpringDemo {
9
10 //讀入指定的工廠配置文件到spring的容器,文件名可自定義
11 private BeanFactory factory = new ClassPathXmlApplicationContext("beans.xml");
12
13 @Test
14 public void test(){
15 //根據bean的key獲取對象的實例
16 Demo d = (Demo) factory.getBean("helloSpring");
17 //或者直接使用重載的getBean方法,設定好需要返回的類型
18 //Demo dd = factory.getBean("helloSpring", Demo.class);
19 d.hello();
20 //dd.hello();
21 }
22
23 }
24
以上,就是spingIOC最簡易的使用。