Springboot@Configuration和@Bean詳解
阿新 • • 發佈:2018-12-20
targe scope span div let con 實例 asf pub
其他@Bean註解的方法來實現依賴註入
Springboot@Configuration和@Bean詳解
一、@Configuration
@Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Component public @interface Configuration { @AliasFor( annotation = Component.class ) String value() default ""; }
可以看到在@Configuration註解中是包含@Component註解的,被@Configuration修飾的類被定義為一個Spring容器(應用上下文)
@Configuration就相當於Spring配置文件中的<beans />標簽,裏面可以配置bean
二、@Bean
@Bean相當於Spring配置文件中的<bean />標簽可以在Spring容器中註入一個bean
@Configuration public class TestConfiguration { @Bean public TestBean testBean() { return new TestBean(); } }
上述代碼相當於實例化一個TestBean並交給Spring容器管理
ps:
1、@Bean註解在返回實例的方法上,如果未通過@Bean指定bean的名稱,則默認與方法名相同
2、@Bean註解默認作用域為單例singleton作用域,可通過@Scope(“prototype”)設置為多例
三、依賴註入
@Configuration public class TestConfiguration { @Bean public TestBean testBean() { return new TestBean(); } @Bean public DIBean diBean() { return new DIBean(testBean()); } }
如上述代碼,通過在@Bean方法中調用
ps:
當需要強制指定實例化bean的順序,可以通過@Order或@DependsOn註解來實現
Springboot@Configuration和@Bean詳解