2.IOC 配置與應用(xml的方式)
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的方式)