码迷,mamicode.com
首页 > 编程语言 > 详细

Springboot@Configuration和@Bean详解

时间:2018-12-20 14:41:28      阅读:551      评论:0      收藏:0      [点我收藏+]

标签:span   其他   interface   turn   spring容器   scope   nbsp   强制   depends   

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注解来实现

Springboot@Configuration和@Bean详解

标签:span   其他   interface   turn   spring容器   scope   nbsp   强制   depends   

原文地址:https://www.cnblogs.com/javafucker/p/10148464.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!