Springboot@Configuration和@Bean詳解

Springboot@Configuration和@Bean詳解

1、@Configuration

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration {
    @AliasFor(
        annotation = Component.class
    )
    String value() default "";
}

能夠看到在@Configuration註解中是包含@Component註解的,被@Configuration修飾的類被定義爲一個Spring容器(應用上下文)spa

@Configuration就至關於Spring配置文件中的<beans />標籤,裏面能夠配置beanprototype

2、@Bean

@Bean至關於Spring配置文件中的<bean />標籤能夠在Spring容器中注入一個beancode

@Configuration
public class TestConfiguration {

    @Bean
    public TestBean testBean() {
        return new TestBean();
    }

}

上述代碼至關於實例化一個TestBean並交給Spring容器管理blog

ps: 作用域

一、@Bean註解在返回實例的方法上,若是未經過@Bean指定bean的名稱,則默認與方法名相同get

二、@Bean註解默認做用域爲單例singleton做用域,可經過@Scope(「prototype」)設置爲多例io

3、依賴注入

@Configuration
public class TestConfiguration {

    @Bean
    public TestBean testBean() {
        return new TestBean();
    }

    @Bean
    public DIBean diBean() {
        return new DIBean(testBean());
    }  

}

如上述代碼,經過在@Bean方法中調用其餘@Bean註解的方法來實現依賴注入class

 ps:test

當須要強制指定實例化bean的順序,能夠經過@Order或@DependsOn註解來實現容器

相關文章
相關標籤/搜索