Springboot@Configuration和@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方法中調用其他@Bean注解的方法來實現依賴注入

 ps:

當需要強制指定實例化bean的順序,可以通過@Order或@DependsOn注解來實現


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM