Spring中@Configuration註解使用
在Spring中使用@Configuration註解載入JavaConfig配置-zifangsky的部落格備份-51CTO部落格
http://blog.51cto.com/983836259/1889610
如題所示,從一些翻譯至國外的書籍中可以看到,一些西方人喜歡使用沒有XML檔案的純粹的JavaConfig配置。但是一方面在國內我們通常都習慣使用XML檔案來配置SpringMVC、Ehcache、Shiro等元件的具體引數配置,另一方面我個人認為適當使用基於XML檔案的配置是可以有效減少配置檔案的程式碼量的。因此,如果想要在專案中載入一部分的JavaConfig應該如何做呢?
(1)新建一個測試用例:
package cn.zifangsky.config; import org.springframework.beans.factory.annotation.Autowire; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import cn.zifangsky.model.User; @Configuration public class UserConfig { @Bean(autowire=Autowire.BY_NAME,name="u") public User user(){ return new User("root","123456"); } }
這裡使用了@Configuration註解表明這個類是一個配置類,同時使用了@Bean定義了一個名為“u”的User型別的bean
(2)在Spring的配置檔案中新增需要自動掃描這個包中的註解:
<context:component-scan base-package="cn.zifangsky.config" />
這裡也就是“cn.zifangsky.config”這個包
(3)測試Controller:
package cn.zifangsky.controller; import javax.annotation.Resource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import cn.zifangsky.model.User; @Controller public class TestController { @Resource(name="u") User user; @RequestMapping("/test.html") public void test(){ System.out.println("測試name:" + user.getName()); } }
可以看到,這裡使用的@Resource註解按名字“u”注入了之前定義好的bean
(4)測試:
啟動專案後訪問:http://localhost:8080/Demo/test.html
控制檯輸出如下:
測試name:root
這麼做有什麼好處呢?
1.使用純java程式碼,不在需要xml
2.在配置中也可享受OO帶來的好處
3.型別安全對重構也能提供良好的支援
4.依舊能享受到所有springIoC容器提供的功能
=============================================================
=============================================================
=============================================================
使用@Configuration註解來代替Spring的bean配置
下面是一個典型的Spring配置檔案(application-config.xml):
1 2 3 4 5 6 7 8 |
|
然後你就可以像這樣來使用是bean了:
1 2 |
|
現在Spring Java Configuration這個專案提供了一種通過java程式碼來裝配bean的方案:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
然後你就可以像這樣來使用是bean了:
1 2 |
|
這麼做有什麼好處呢?
1.使用純java程式碼,不在需要xml
2.在配置中也可享受OO帶來的好處
3.型別安全對重構也能提供良好的支援
4.依舊能享受到所有springIoC容器提供的功能