spring中@Configuration和@Bean注解的用法
概要
@Configuration里邊定義@Bean,@Configuration相當于一個xml配置文件,@Bean就是xml中的<bean/>
定義
bean依賴可以調(diào)用方法,比如這里的beanTwo()。你可能會好奇,如果beanTwo()被調(diào)用兩次會不會創(chuàng)建兩個beanTwo實例,因為spring bean的默認scope是單例;答案是不會創(chuàng)建多個實例的,@Configuration類實現(xiàn)原理是cglib,代理類繼承了配置類,然后重寫方法,從而實現(xiàn)攔截,這也是為什么配置類不能被final修飾。
@Configuration public class AppConfig { @Bean public BeanOne beanOne() { //bean依賴,直接調(diào)用本類方法beanTwo return new BeanOne(beanTwo()); } @Bean public BeanTwo beanTwo() { return new BeanTwo(); } }
如果跨@Configuration怎么辦?將依賴bean當做方法參數(shù)傳遞
,無論是否同一個類都可以使用這種方式,實踐中這種用法更實用。
@Configuration public class AppConfig1 { //bean依賴,方法參數(shù)當作依賴 @Bean public BeanOne beanOne(BeanTwo beanTwo) { return new BeanOne(beanTwo); } } @Configuration public class AppConfig2 { @Bean public BeanTwo beanTwo() { return new BeanTwo(); } }
注意
如果@Bean方法返回的是BeanPostProcessor
,方法要用static
修飾,否則可能造成@Configuration中的@AutoWired、@Inject沒被注入,因為很有可能AutoWiredBeanPostProcessor在@Configuration實例化之后執(zhí)行。這是為什么呢? 這是因為static方法的BeanPostProcessor實例化時,不需要實例化@Configuration類,相當于執(zhí)行ConfigurationClass.staticMethod(); 而非static方法,依賴@Configuration類實例,相當于new ConfigurationClass().notStaticMethod();
到此這篇關于spring中@Configuration和@Bean注解的用法的文章就介紹到這了,更多相關spring的@Configuration和@Bean內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- Springboot @Configuration @bean注解作用解析
- Spring @Bean注解配置及使用方法解析
- SpringBoot配置@Configuration注解和@bean注解
- Spring注解驅(qū)動之關于@Bean注解指定初始化和銷毀的方法
- SpringBoot?@Configuration與@Bean注解使用介紹
- Spring?@Bean注解深入分析源碼執(zhí)行過程
- 關于spring的@Bean注解放入引用Bean中初始化失敗分析
- Spring @Bean注解的使用場景與案例實現(xiàn)
- 深入解析Spring中的@Bean注解
- 一文讀懂Spring中@Bean注解的核心作用
相關文章
Mybatis接口Mapper內(nèi)的方法為啥不能重載嗎
這篇文章主要介紹了Mybatis接口Mapper內(nèi)的方法為啥不能重載嗎,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09java數(shù)組排序示例(冒泡排序、快速排序、希爾排序、選擇排序)
java中在運用數(shù)組進行排序功能時,一般有四種方法:快速排序法、冒泡法、選擇排序法、插入排序法(希爾排序(Shell Sort)是插入排序的一種),下面是一些示例,需要的朋友可以參考下2014-03-03關于break和continue以及l(fā)abel的區(qū)別和作用(詳解)
下面小編就為大家?guī)硪黄P于break和continue以及l(fā)abel的區(qū)別和作用(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05