1、前言spring
spring4.0+版本開發中使用到了自動裝配技術,故有了這篇總結博文,後面對接口、實現類、裝配注入,作詳細解釋。ide
2、@Resource、@Autowired、@Qualifier 定義說明:測試
一、@Resource 默認根據名字注入,其次按照類型搜索spa
二、@Autowired 根據類型注入code
三、@Autowired @Qualifie("userService") 兩個結合起來能夠根據名字和類型注入blog
3、程序示例接口
一、定義接口 GameService遊戲
package com.tlong.service; /** * 遊戲接口 */ public interface GameService { public void play(); }
二、定義兩個實現類 GloryOfKingsImpl 、PubgImpl 開發
package com.tlong.service; import org.springframework.stereotype.Service; /** * 王者榮耀 */ @Component public class GloryOfKingsImpl implements GameService { @Override public void play() { System.out.println("王者榮耀 遊戲開始......"); } }
package com.tlong.service; import org.springframework.stereotype.Service; /** * 絕地求生 */ @Component public class PubgImpl implements GameService { @Override public void play() { System.out.println("絕地求生 遊戲開始......"); } }
三、定義測試類 TestControllerclass
public class TestController { //簡潔寫法:保證變量名是實現類的名稱,注意:首字符小寫 @Autowired private GameService gloryOfKingsImpl; //簡潔寫法:保證變量名是實現類的名稱,注意:首字符小寫,此處@Resource和@Autowired實現方式相同 @Resource private GameService pubgImpl; //若是想指定不同的變量名要怎麼寫呢?不能使用上面的自動裝配技術也能夠理解,在實現類中使用了@Component註解,spring會自爲其建立一個bean並給定ID爲gloryOfKingsImpl,spring並不知道該變量須要裝配哪一個實現類 //寫法以下 //一、使用@Autowired和@Qualifier實現,注意:@Qualifier中的首字符小寫 @Autowired @Qualifier("gloryOfKingsImpl") private GameService wzry; //二、使用@Resource實現,注意:@Resource中的首字符小寫 @Resource(name = "pubgImpl") private GameService jdqs; public void playGame(){ gloryOfKingsImpl.play(); pubgImpl.play(); wzry.play(); jdqs.play(); } }