一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - 淺談spring ioc的注入方式及注入不同的數(shù)據(jù)類型

淺談spring ioc的注入方式及注入不同的數(shù)據(jù)類型

2021-03-12 13:47等想出來再取 Java教程

這篇文章主要介紹了淺談spring ioc的注入方式及注入不同的數(shù)據(jù)類型,具有一定借鑒價值,需要的朋友可以參考下

關(guān)于Spring-IoC的簡單使用參考:

spring ioc的簡單實(shí)例及bean的作用域?qū)傩越馕?/strong>

1、通過set方法注入不同數(shù)據(jù)類型

測試類代碼(set方式注入的屬性一定要加set方法)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/**通過set方法注入示例*/
public class IoC_By_Set {
    /**注入Integer類型參數(shù)*/
    private Integer id;
    /**注入String類型參數(shù)*/
    private String name;
    /**注入實(shí)體Bean*/
    private User user;
    /**注入數(shù)組*/
    private Object[] array;
    /**注入List集合*/
    private List<Object> list;
    /**注入Set集合*/
    private Set<Object> set;
    /**注入Map鍵值對*/
    private Map<Object, Object> map;
    /**注入properties類型*/
    private Properties properties;
    /**注入空字符串*/
    private String emptyValue;
    /**注入null值*/
    private String nullValue = "";
    /**檢測注入的屬性是否全部正確*/
    public Boolean checkAttr() {
        if(id == null) {
            return false;
        } else {
            System.out.println("id:" + id);
        }
        System.out.println("--------------------------");
        if(name == null) {
            return false;
        } else {
            System.out.println("name:" + name);
        }
        System.out.println("--------------------------");
        if(user == null) {
            return false;
        } else {
            System.out.println("Bean:" + user.getId() + "|" +
                      user.getUserName() + "|" + user.getPassWord());
        }
        System.out.println("--------------------------");
        if(array == null) {
            return false;
        } else {
            System.out.println("array:");
            for (Object object : array) {
                System.out.println(object.toString());
            }
        }
        System.out.println("--------------------------");
        if(list == null) {
            return false;
        } else {
            System.out.println("list:");
            for (Object object : list) {
                System.out.println(object.toString());
            }
        }
        System.out.println("--------------------------");
        if(set == null) {
            return false;
        } else {
            System.out.println("set:");
            for (Object object : set) {
                System.out.println(object.toString());
            }
        }
        System.out.println("--------------------------");
        if(map == null) {
            return false;
        } else {
            Set<Entry<Object, Object>> set = map.entrySet();
            System.out.println("map:");
            for (Entry<Object, Object> entry : set) {
                System.out.println(entry.getKey() + "|" + entry.getValue());
            }
        }
        System.out.println("--------------------------");
        if(properties == null) {
            return false;
        } else {
            Set<Entry<Object, Object>> set = properties.entrySet();
            System.out.println("properties:");
            for (Entry<Object, Object> entry : set) {
                System.out.println(entry.getKey() + "|" + entry.getValue());
            }
        }
        System.out.println("--------------------------");
        if(!"".equals(emptyValue))
              return false;
        System.out.println("--------------------------");
        if(!(null == nullValue))
              return false;
        System.out.println("--------------------------");
        System.out.println("全部正確!!!");
        return true;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setUser(User user) {
        this.user = user;
    }
    public void setArray(Object[] array) {
        this.array = array;
    }
    public void setList(List<Object> list) {
        this.list = list;
    }
    public void setSet(Set<Object> set) {
        this.set = set;
    }
    public void setMap(Map<Object, Object> map) {
        this.map = map;
    }
    public void setProperties(Properties properties) {
        this.properties = properties;
    }
    public void setEmptyValue(String emptyValue) {
        this.emptyValue = emptyValue;
    }
    public void setNullValue(String nullValue) {
        this.nullValue = nullValue;
    }
}

applicationContext.xml配置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<!-- set方式注入 -->
<bean id="ioC_By_Set" class="com.bc.ioc.demo01.IoC_By_Set">
  <!-- 注入id屬性 -->
  <property name="id" value="1"/>
  <!-- 使用<![CDATA[]]>標(biāo)記處理XML特 殊字符 -->
  <property name="name">
    <!-- 也可以使用P&amp;G -->
    <value><![CDATA[P&G]]></value>
  </property>
  <!-- 定義內(nèi)部Bean注入 -->
  <property name="user">
    <bean class="com.bc.pojo.User">
      <property name="id" value="1"/>
      <property name="userName" value="內(nèi)部Bean"/>
      <property name="passWord" value="233"/>
    </bean>
  </property>
  <!-- 注入數(shù)組類型 -->
  <property name="array">
    <array>
      <!-- 定義數(shù)組元素 -->
      <value>array01</value>
      <value>array02</value>
      <value>array03</value>
    </array>
  </property>
  <!-- 注入List類型 -->
  <property name="list">
    <list>
      <!-- 定義list中元素 -->
      <value>list01</value>
      <value>list02</value>
      <value>list03</value>
    </list>
  </property>
  <!-- 注入Set類型 -->
  <property name="set">
    <set>
      <!-- 定義set中元素 -->
      <value>set01</value>
      <value>set02</value>
      <value>set03</value>
    </set>
  </property>
  <!-- 注入Map類型 -->
  <property name="map">
    <map>
      <!-- 定義map中的鍵值對 -->
      <entry>
        <key>
          <value>mapKey01</value>
        </key>
        <value>mapValue01</value>
      </entry>
      <entry>
        <key>
          <value>mapKey02</value>
        </key>
        <value>mapValue02</value>
      </entry>
    </map>
  </property>
  <!-- 注入properties類型 -->
  <property name="properties">
    <props>
      <!-- 定義properties中的鍵值對 -->
      <prop key="propKey1">propValue1</prop>
      <prop key="propKey2">propValue2</prop>
    </props>
  </property>
  <!-- 注入空字符串 -->
  <property name="emptyValue">
    <value></value>
  </property>
  <!-- 注入null值 -->
  <property name="nullValue">
    <null/>
  </property>
</bean>

測試代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
public class IoC_Test {
    private ApplicationContext ctx;
    @Before
      public void load() {
        //讀取applicationContext.xml配置文件
        ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
    }
    @Test
      public void SetTest() {
        IoC_By_Set ioc = (IoC_By_Set) ctx.getBean("ioC_By_Set");
        ioc.checkAttr();
    }
}

控制臺結(jié)果:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
id:1
--------------------------
name:P&G
--------------------------
Bean:1|內(nèi)部Bean|233
--------------------------
array:
array01
array02
array03
--------------------------
list:
list01
list02
list03
--------------------------
set:
set01
set02
set03
--------------------------
map:
mapKey01|mapValue01
mapKey02|mapValue02
--------------------------
properties:
propKey2|propValue2
propKey1|propValue1
--------------------------
--------------------------
--------------------------
全部正確!!!

2、通過構(gòu)造方法注入各種類型屬性

注意:使用JDK1.8版本請將spring相關(guān)jar包升級到4.x版本以上,否則不兼容構(gòu)造方法注入

測試類代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/** 通過構(gòu)造方法注入示例 */
public class IoC_By_Constructor {
    private Integer id;
    private String name;
    private User user;
    private List<Object> list;
    public IoC_By_Constructor() {
    }
    public IoC_By_Constructor(Integer id, String name, User user,
          List<Object> list) {
        this.id = id;
        this.name = name;
        this.user = user;
        this.list = list;
    }
    /**檢查是否注入成功*/
    public Boolean checkAttr() {
        if(id == null) {
            return false;
        } else {
            System.out.println("id:" + id);
        }
        System.out.println("----------------------------");
        if(name == null) {
            return false;
        } else {
            System.out.println("name:" + name);
        }
        System.out.println("----------------------------");
        if(user == null) {
            return false;
        } else {
            System.out.println("user:" + user.getId() + "|" +
                      user.getUserName() + "|" + user.getPassWord());
        }
        System.out.println("----------------------------");
        if(list == null) {
            return false;
        } else {
            System.out.println("list:");
            for (Object object : list) {
                System.out.println(object.toString());
            }
        }
        System.out.println("----------------------------");
        System.out.println("全部正確!!!");
        return true;
    }
}

applicationContext.xml配置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!-- 構(gòu)造方法注入 演示幾種類型-->
<bean id="ioC_By_Constructor" class="com.bc.ioc.demo02.IoC_By_Constructor">
  <!-- 注入Integer屬性,可以選擇使用index指定參數(shù)位置,也可以選擇使用type指定參數(shù)類型 -->
  <constructor-arg index="0" value="1" type="java.lang.Integer"/>
  <!-- 注入字符串 -->
  <constructor-arg value="P&amp;G"/>
  <!-- 注入對象 -->
  <constructor-arg>
    <!-- 內(nèi)建對象 -->
    <bean class="com.bc.pojo.User">
      <constructor-arg value="1"/>
      <constructor-arg value="構(gòu)造內(nèi)部Bean"/>
      <constructor-arg value="666"/>
    </bean>
  </constructor-arg>
  <!-- 注入集合 -->
  <constructor-arg>
    <list>
      <value>list01</value>
      <value>list02</value>
      <value>list03</value>
    </list>
  </constructor-arg>
</bean>

測試代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
public class IoC_Test {
    private ApplicationContext ctx;
    @Before
      public void load() {
        //讀取applicationContext.xml配置文件
        ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
    }
    @Test
      public void constructorTest() {
        IoC_By_Constructor ioc = (IoC_By_Constructor) ctx.getBean("ioC_By_Constructor");
        ioc.checkAttr();
    }
}

控制臺結(jié)果:

?
1
2
3
4
5
6
7
8
9
10
11
12
id:1
----------------------------
name:P&G
----------------------------
user:1|構(gòu)造內(nèi)部Bean|666
----------------------------
list:
list01
list02
list03
----------------------------
全部正確!!!

3、自動注入(自動裝配)

自動裝配雖然能節(jié)省一些代碼但是不推薦使用

測試類代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**自動裝配注入*/
public class IoC_By_Auto {
    private User user;
    /**檢查是否注入成功*/
    public Boolean checkAttr() {
        if(user == null) {
            return false;
        } else {
            System.out.println("user:" + user.getId() + "|" +
                      user.getUserName() + "|" + user.getPassWord());
        }
        System.out.println("正確!!!");
        return true;
    }
    /**自動裝配的屬性需要設(shè)置set方法*/
    public void setUser(User user) {
        this.user = user;
    }
}

applicationContext.xml配置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- 被自動裝配獲取的bean -->
<bean id="user" class="com.bc.pojo.User">
  <property name="id" value="1"/>
  <property name="userName" value="自動裝配"/>
  <property name="passWord" value="233"/>
</bean>
<!-- 自動裝配的bean
   autowire:byName 根據(jù)類的屬性名查找與之命名相同的id的bean進(jìn)行裝配
       byType 根據(jù)類的屬性類型查找唯一一個匹配類型的bean,如果有多個bean匹配則拋出異常
       constructor 根據(jù)類的構(gòu)造方法參數(shù)類型匹配對應(yīng)的bean
       no 默認(rèn),表示不使用自動裝配
       default:由上級標(biāo)簽<beans>的default-autowire屬性確定 -->
<bean id="ioC_By_Auto" class="com.bc.ioc.demo03.IoC_By_Auto" autowire="byName"></bean>

測試代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
public class IoC_Test {
    private ApplicationContext ctx;
    @Before
      public void load() {
        //讀取applicationContext.xml配置文件
        ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
    }
    @Test
      public void AutoTest() {
        IoC_By_Auto ioc = (IoC_By_Auto) ctx.getBean("ioC_By_Auto");
        ioc.checkAttr();
    }
}

控制臺結(jié)果

?
1
2
user:1|自動裝配|233
正確!!!

以上使用的是byName模式,其他模式配置代碼已經(jīng)注明,不做測試。

4、使用P命名空間注入屬性

測試類代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/**使用P命名空間注入*/
public class IoC_By_P {
    private Integer id;
    private String name;
    private User user;
    /**檢查是否注入成功*/
    public Boolean checkAttr() {
        if(id == null) {
            return false;
        } else {
            System.out.println("id:" + id);
        }
        System.out.println("----------------------------");
        if(name == null) {
            return false;
        } else {
            System.out.println("name:" + name);
        }
        System.out.println("----------------------------");
        if(user == null) {
            return false;
        } else {
            System.out.println("user:" + user.getId() + "|" +
                      user.getUserName() + "|" + user.getPassWord());
        }
        System.out.println("----------------------------");
        System.out.println("全部正確!!!");
        return true;
    }
    //使用P命名空間注入屬性需要設(shè)置set方法
    public void setId(Integer id) {
        this.id = id;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setUser(User user) {
        this.user = user;
    }
}

applicationContext.xml配置

?
1
2
3
4
5
6
7
8
<!-- 使用P命名空間注入各種類型屬性 -->
<bean id="user2" class="com.bc.pojo.User">
  <property name="id" value="1"/>
  <property name="userName" value="P"/>
  <property name="passWord" value="233"/>
</bean>
<bean id="ioC_By_P" class="com.bc.ioc.demo04.IoC_By_P" p:id="1"
  p:name="命名空間" p:user-ref="user2"></bean>

測試代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
public class IoC_Test {
    private ApplicationContext ctx;
    @Before
      public void load() {
        //讀取applicationContext.xml配置文件
        ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
    }
    @Test
      public void PTest() {
        IoC_By_P ioc = (IoC_By_P) ctx.getBean("ioC_By_P");
        ioc.checkAttr();
    }
}

控制臺結(jié)果

?
1
2
3
4
5
6
7
id:1
----------------------------
name:命名空間
----------------------------
user:1|P|233
----------------------------
全部正確!!!

5、使用注解方式注入

Spring在3.0以后,提供了基于Annotation(注解)的注入。

1.@Autowired-對成員變量、方法和構(gòu)造函數(shù)進(jìn)行標(biāo)注,來完成自動裝配的工作,不推薦使用

2.@Qualifier-配合@Autowired來解決裝配多個同類型的bean

3.@Resource-JSR-250標(biāo)準(zhǔn)注解,作用相當(dāng)于@Autowired,只不過@Autowired按byType自動注入,而@Resource默認(rèn)按byName自動注入

4.@PostConstruct-在方法上加上注解@PostConstruct,這個方法就會在Bean初始化之后被Spring容器執(zhí)行

5.@PreDestroy-在方法上加上注解@PreDestroy,這個方法就會在Bean初始化之后被Spring容器執(zhí)行

6.@Component-只需要在對應(yīng)的類上加上一個@Component注解,就將該類定義為一個Bean,不推薦使用,推薦使用更加細(xì)化的三種:@Repository、@Service、@Controller

@Repository存儲層Bean

@Service業(yè)務(wù)層Bean

@Controller展示層Bean

7.@Scope-定義Bean的作用范圍

首先配置applicationContext.xml開啟注解

?
1
2
<!-- 掃描包中注解標(biāo)注的類 -->
<context:component-scan base-package="com.bc.ioc.demo05"/>

實(shí)體Bean加注解

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
@Repository
public class User {
    private Integer id = 1;
    private String userName = "注解注入";
    private String passWord = "233";
    public User() {
        super();
    }
    public User(Integer id, String userName, String passWord) {
        super();
        this.id = id;
        this.userName = userName;
        this.passWord = passWord;
    }
    public Integer getId() {
        return id;
    }
    public String getUserName() {
        return userName;
    }
    public String getPassWord() {
        return passWord;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }
}

測試類代碼加注解

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**使用注解注入屬性*/
@Service("ioC_By_Annotation")
public class IoC_By_Annotation {
    @Resource
      private User user;
    public void setUser(User user) {
        this.user = user;
    }
    /**檢查是否注入成功*/
    public Boolean checkAttr() {
        if(user == null) {
            return false;
        } else {
            System.out.println("user:" + user.getId() + "|" +
                      user.getUserName() + "|" + user.getPassWord());
        }
        System.out.println("正確!!!");
        return true;
    }
}

測試代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
public class IoC_Test {
    private ApplicationContext ctx;
    @Before
      public void load() {
        //讀取applicationContext.xml配置文件
        ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
    }
    @Test
      public void annotationTest() {
        IoC_By_Annotation ioc = (IoC_By_Annotation) ctx.getBean("ioC_By_Annotation");
        ioc.checkAttr();
    }
}

控制臺輸出

經(jīng)測試使用注解注入如果applicationContext.xml配置有其他注入方式會報錯,也會導(dǎo)致其他注入方式異常。

?
1
2
user:1|注解注入|233
正確!!!

6、通過配置靜態(tài)工廠方法Bean注入

靜態(tài)工廠代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
/**靜態(tài)工廠*/
public class StaticFactory {
    public static Integer getId() {
        return 1;
    }
    public static String getName() {
        return "靜態(tài)工廠";
    }
    public static User getUser() {
        return new User(1, "工廠User", "666");
    }
}

測試類代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/** 通過靜態(tài)工廠方式注入 */
public class IoC_By_StaticFactory {
    private Integer id;
    private String name;
    private User user;
    /** 檢查是否注入成功 */
    public Boolean checkAttr() {
        if (id == null) {
            return false;
        } else {
            System.out.println("id:" + id);
        }
        System.out.println("----------------------------");
        if (name == null) {
            return false;
        } else {
            System.out.println("name:" + name);
        }
        System.out.println("----------------------------");
        if (user == null) {
            return false;
        } else {
            System.out.println("user:" + user.getId() + "|"
                      + user.getUserName() + "|" + user.getPassWord());
        }
        System.out.println("----------------------------");
        System.out.println("全部正確!!!");
        return true;
    }
    /**需要為需要注入的屬性設(shè)置set方法*/
    public void setId(Integer id) {
        this.id = id;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setUser(User user) {
        this.user = user;
    }
}

applicationContext.xml配置

?
1
2
3
4
5
6
7
8
9
10
<!-- 配置靜態(tài)工廠方法Bean 其實(shí)就是將工廠方法返回的數(shù)值配置成Bean -->
<bean id="factory_id" class="com.bc.ioc.demo06.StaticFactory" factory-method="getId"/>
<bean id="factory_name" class="com.bc.ioc.demo06.StaticFactory" factory-method="getName"/>
<bean id="factory_user" class="com.bc.ioc.demo06.StaticFactory" factory-method="getUser"/>
<!-- 注入對應(yīng)的靜態(tài)工廠方法Bean -->
<bean id="ioC_By_StaticFactory" class="com.bc.ioc.demo06.IoC_By_StaticFactory">
  <property name="id" ref="factory_id"/>
  <property name="name" ref="factory_name"/>
  <property name="user" ref="factory_user"/>
</bean>

測試代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
public class IoC_Test {
    private ApplicationContext ctx;
    @Before
      public void load() {
        //讀取applicationContext.xml配置文件
        ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
    }
    @Test
      public void staticFactoryTest() {
        IoC_By_StaticFactory ioc = (IoC_By_StaticFactory) ctx.getBean("ioC_By_StaticFactory");
        ioc.checkAttr();
    }
}

控制臺輸出結(jié)果

?
1
2
3
4
5
6
7
id:1
----------------------------
name:靜態(tài)工廠
----------------------------
user:1|工廠User|666
----------------------------
全部正確!!!

7、通過實(shí)例工廠方法注入

與靜態(tài)工廠區(qū)別在于實(shí)例工廠不是靜態(tài)的,需要先new 一個實(shí)例工廠對象,才可以配置其方法,而new 的這個對象也由spring來管理

工廠代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
/**實(shí)例工廠*/
public class Factory {
    public Integer getId() {
        return 1;
    }
    public String getName() {
        return "實(shí)例工廠";
    }
    public User getUser() {
        return new User(1, "實(shí)例工廠User", "233");
    }
}

測試類代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/**實(shí)例工廠注入*/
public class IoC_By_Factory {
    private Integer id;
    private String name;
    private User user;
    /** 檢查是否注入成功 */
    public Boolean checkAttr() {
        if (id == null) {
            return false;
        } else {
            System.out.println("id:" + id);
        }
        System.out.println("----------------------------");
        if (name == null) {
            return false;
        } else {
            System.out.println("name:" + name);
        }
        System.out.println("----------------------------");
        if (user == null) {
            return false;
        } else {
            System.out.println("user:" + user.getId() + "|"
                      + user.getUserName() + "|" + user.getPassWord());
        }
        System.out.println("----------------------------");
        System.out.println("全部正確!!!");
        return true;
    }
    /**需要為需要注入的屬性設(shè)置set方法*/
    public void setId(Integer id) {
        this.id = id;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setUser(User user) {
        this.user = user;
    }
}

applicationContext.xml配置

?
1
2
3
4
5
6
7
8
9
10
11
12
<!-- 配置實(shí)例工廠Bean -->
<bean id="factory" class="com.bc.ioc.demo07.Factory"/>
<!-- 配置實(shí)例工廠方法Bean -->
<bean id="f_id" factory-bean="factory" factory-method="getId"/>
<bean id="f_name" factory-bean="factory" factory-method="getName"/>
<bean id="f_user" factory-bean="factory" factory-method="getUser"/>
<!-- 注入對應(yīng)的實(shí)例工廠方法Bean -->
<bean id="ioC_By_Factory" class="com.bc.ioc.demo07.IoC_By_Factory">
  <property name="id" ref="f_id"/>
  <property name="name" ref="f_name"/>
  <property name="user" ref="f_user"/>
</bean>

測試類代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
public class IoC_Test {
    private ApplicationContext ctx;
    @Before
      public void load() {
        //讀取applicationContext.xml配置文件
        ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
    }
    @Test
      public void factoryTest() {
        IoC_By_Factory ioc = (IoC_By_Factory) ctx.getBean("ioC_By_Factory");
        ioc.checkAttr();
    }
}

控制臺輸出

?
1
2
3
4
5
6
7
id:1
----------------------------
name:實(shí)例工廠
----------------------------
user:1|實(shí)例工廠User|233
----------------------------
全部正確!!!

總結(jié)

以上就是本文關(guān)于淺談spring ioc的注入方式及注入不同的數(shù)據(jù)類型的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

原文鏈接:http://blog.csdn.net/qq_32588349/article/details/51554379

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美日韩一区二区三区在线播放 | 国产在线步兵一区二区三区 | 视频在线观看一区二区 | 成人综合网站 | 美女毛片老太婆bbb80岁 | 国产自在线拍 | 国产成人在线影院 | 亚洲成人精品久久 | 欧美精品v日韩精品v国产精品 | 故意短裙公车被强好爽在线播放 | 国内剧情麻豆 | 欧美日韩国产亚洲一区二区三区 | 色综合合久久天天综合绕视看 | 狠狠澡| 欧美日本一本线在线观看 | 动漫jk美女被爆羞羞漫画 | 女老板用丝袜脚夹我好爽 | 亚洲精品国产综合久久一线 | 大香线一本 | 欧美久久久久久 | japan日韩xxxx69hd| 韩国漂亮美女三级在线观看 | www四虎影院 | 日日日操 | 国产亚洲人成网站在线观看不卡 | 爽爽影院免费观看 | 99热这里只有精品在线观看 | 亚洲 色 欧美 爱 视频 日韩 | 精品综合久久久久久8888 | 我半夜摸妺妺的奶C了她软件 | 美女张开下身让男人桶 | jizz 日本亚洲 | 亚洲AV久久无码精品九号 | 国产在线精品成人一区二区三区 | www.伊人| 亚洲AV中文字幕无码久久 | 色偷偷亚洲综合网亚洲 | 398av影院视频在线 | 亚洲欧美日韩另类精品一区二区三区 | 免费国产白棉袜踩踏区域 | 亚洲国产成人超福利久久精品 |