1. 程式人生 > >2.IOC 配置與應用(xml的方式)

2.IOC 配置與應用(xml的方式)

prototype 宋體 -h ioc 但是 一起 -- lazy -i

1.註入方式

  a)setter(主要)

  b)構造方法(可以忘記)

  c)接口註入(可以忘記)

2.id vs name

  bean 標簽中可以使用 name 屬性 來完成 id 屬性的功能,不過習慣用id

  另外,name 還可以使用特殊字符,但是誰沒事會寫一些特殊字符 作為 Map的key

3.簡單屬性的註入

  <property name=… value=….>

4.<bean> 中的 scope 屬性

  <bean id="userService" class="com.bjsxt.service.UserService" scope="prototype">

  當容器中的對象被拿出使用時,是否創建新的

  proptotype 每次創建新的對象 singleton 單例

5.集合註入

  <property name="lists">
    <list>
      <value>1</value>
      <value>2</value>
      <value>3</value>
    </list>
  </property>

6.自動裝配

  a) byName   

    <bean id="userService" class="com.bjsxt.service.UserService" autowire="byName">

    使用了 autowire 屬性後,不需要在下面 使用 property 手動指定 註入哪個bean

    會自動去找 這個bean 的set方法,如:在這裏找到了 UserService 的 setUserDao這個方法

    拿到這個方法名,去掉 set ,再將首字母小寫,得到字符串(userDao),再去看容器中,是否有

    id為 userDao的 bean,自動有的話,將其註入進來

  b) byType

    按照set 方法所接收的參數的類型的來確定

  c)如果所有的bean都用同一種,可以使用beans的屬性:default-autowire

  

7.生命周期

  lazy-init  

  init-method destory-method

1 <!-- 使用lazy-init 來指定是否在spring容器啟動時,就加載這個bean對象,設置為 true 啟動就加載,設置為false  用到的時候再加載,有點像hibernate裏面的 fetchType -->
2      <!-- 使用 init-method   destroy-method   來指定該bean對象加載和銷毀時 調用的 該對象的方法,這也能夠確定該對象的生命周期-->
3      <!-- 另外:init-method   destroy-method   不要和  不要和prototype一起用,因為這樣使用了,bean對象無法銷毀 -->
4   <bean id="userService" class="com.bjsxt.service.UserService" lazy-init="true" init-method="init" destroy-method="destroy">
5       <property name="userDAO" ref="u" />
6   </bean>

2.IOC 配置與應用(xml的方式)