Spring中Bean屬性的注入方式

1. setter
定義一個userDao和一個userService,在userService中定義userDao私有屬性,並定義setter方法,然後在xml中建立兩個類的聲明及配置:

<bean id="userDao" class="....." />
<bean id="userService" class="......" />
	<property name="userDao" ref="userDao" />
</bean>

2. 構造器
將setter注入bean的xml中property換成constructor-arg即可通過構造函數完成userDao注入,但耦合緊密,不推薦。

3. 註解
不需要在xml中配置bean,只要加上<context:component-scan base-package=“com.imooc.spring” /> 即可掃描整個包下的註解。
在userDaoImpl下增加@Repository註解,意爲倉庫,在IOC容器初始化時自動加載當前的類並實例化,bean id默認爲類名小寫,可設置爲自定義,需在userService上加註解@Service(“userService”),中間的字符串即爲bean id。
在userService的userDao屬性上增加@Resouce(name=“userDao”)完成注入。

4. java config
不再使用xml,而是註解+java代碼。仍在xml中加上掃描註解的配置,新建AppConfig類。

@Configuration
public class AppConfig{
	@Bean(name="userDao")
	public UserDao userDao(){
		return new UserDaoImpl();
	}
	@Bean(name="userService")
	public UserService userService(){
		UserService userService = new UserService();
		userService.setUserDao(this.userDao());
		return userService;
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章