Spring 之 Annotation-->>@Autowired & @Qualifier

Annotation註解:

     JDK1.5之後開始提供支持

    在Spring IoC部分中,對於bean的配置,有兩種方式,一種是通過xml來配置,另外一種就是使用Annotation

    @Autowired註解的意思是自動裝配(自動注入屬性)

    比如我們有一個UserDAO需要被注入,我們可以這樣寫:


<bean id="u1" class="com.ccniit.dao.impl.UserDAOImpl"></bean>

其中UserDAOImpl是UserDAO的實現類,UserDAO是一個接口

在java代碼中,我們這樣將  u  注入進去:

@Autowired會自動的在xml文件中尋找與UserDAO類型相同的bean並且注入進去(經過簡單的實驗,xml文件中只能有一個UserDAO的bean,否則會報錯)

	private UserDAO userDAO;

	@Autowired
	public void setUserDAO(UserDAO userDAO)
	{
		this.userDAO = userDAO;
	}

這樣之後,我們就能使用這個userDAO了,如果這裏不加@Autowired註解,xml配置文件裏面也沒有進行ref方式的注入,那麼,運行程序的時候會報userDAO的空指針錯誤

上面說過,@Autowired是尋找類型注入的所以是byType類型,所以兩個相同的類型會報錯誤,怎麼解決這個問題呢?

這裏我們就要用到@Qualifier了,如下:

xml:

	<bean id="u1" class="com.ccniit.dao.impl.UserDAOImpl">
		<property name="uId" value="1"></property>
	</bean>

	<bean id="u2" class="com.ccniit.dao.impl.UserDAOImpl">
		<property name="uId" value="2"></property>
	</bean>

java:

	@Autowired
	@Qualifier(value = "u2")
	public void setUserDAO(UserDAO userDAO)
	{
		this.userDAO = userDAO;
	}

這樣,我們找到的就是id爲u2的類,爲了區分它們,我們給這個實現類加一個ID值分別賦值爲1和2,在上面的xml代碼中有體現了。

u2的運行打印結果:

uId = 2

u1的運行打印結果:

uId = 1


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章