配置bean
class: bean 的全類名,通過反射的方式在IOC容器中創(chuàng)建Bean,所以要求Bean中必須有無參數(shù)的構(gòu)造方法宗兼。
id:唯一的。
setter注入
<bean id="" class="">
<property name="" value=""></property>
</bean>
構(gòu)造器注入
<bean id="" class="">
<constructor-arg value="" type="java.lang.String"></constructor-arg>
<constructor-arg value="" index="0"></constructor-arg>
</bean>
細(xì)節(jié)
1.用property的<ref>屬性簡歷bean之間的引用關(guān)系
<property name="" ref=""></property>
2.在內(nèi)部聲明bean(不能被別的bean引用)
<bean class="">
<constructor-arg value=""></constructor-arg>
</bean>
bean的作用域
<bean id="" class="" scope="prototype/singleton(默認(rèn))"></bean>
prototype:每申請一次生成一個新的bean(容器初始化時不創(chuàng)建)
singleton:整個容器聲明周期內(nèi)只創(chuàng)建一個bean(容器初始化時就創(chuàng)建了這個bean)
IOC容器中bean的生命周期方法
1.通過構(gòu)造器或工廠方法創(chuàng)建bean實例
2.為bean的屬性設(shè)置值和對其他bean的引用
3.調(diào)用bean的初始化方法
4.bean可以使用
5.容器關(guān)閉時,調(diào)用bean的銷毀方法
<bean id="" class="" init-method="" destroy-method=""></bean>自己定義初始化和銷毀方法娩嚼。
實現(xiàn)BeanPostProcessor接口,并具體提供以下兩個方法:
init-method之前被調(diào)用
Object postProcessBeforeInitialization(Object bean,String beanName)
init-method之后被調(diào)用
Object postProcessAfterInitialization(Object bean,String beanName)
可以在以上兩個方法中修改返回的bean滴肿,甚至返回一個新的bean岳悟。
通過靜態(tài)工廠方法來配置bean
class:指向靜態(tài)工廠方法的全類名
factory-method:指向靜態(tài)工廠方法的名字
constructor-arg:工廠方法需要傳入?yún)?shù)時,用這個配置參數(shù)。
通過實例工廠方法來配置bean
配置工廠實例
<bean id="factory" class="com.instancefactory"></bean>
通過實例工廠方法來配置bean
<bean id="" factory-bean="factory" factory-method="getcar">
<constructor-arg value="ford"></constructor-arg>
</bean>
用注解聯(lián)系兩個bean之間的關(guān)系
1.某個變量或set方法之前加@Autowired注解贵少,如下所示
@Autowired
private? UserService uservice
這樣就可以在ioc容器中自動找相應(yīng)的bean
2.若一個接口有多個類型兼容的實現(xiàn)bean呵俏,那么@Autowired之后的括號中可以命名一個同一實現(xiàn)的屬性名,如下
@UserService("userService")
public class UserServiceImpl implents UserService
@Autowired
public void setUserService(UserService userService)
3.也可以在對象和set方法之前加上@Autowired和@Quallifier如下所示
@Autowired
@Qualifier("userRepositoryImpl")
public void setUserRepository(UserRepository userrepository){
this.userrepository=userrepository;
}