源码分析

    
@SpringBootConfiguration可以简单的理解为就是一个@Configuration注解,表示当前类是一个配置类,通过@Configuration 与 @Bean结合,将Bean注册到Spring ioc 容器。@SpringBootConfiguration的源码如下

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {
    @AliasFor(
        annotation = Configuration.class
    )
    boolean proxyBeanMethods() default true;
}

     在@SpringBootConfiguration的源码中除了@Target、@Retention、@Documented三个常规的注解外,最重要的注解就是@Configuration。
@Configuratio的作用:
     从Spring3.0开始,@Configuration用于定义配置类,可替换xml文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplication或AnnotationConfigWebApplication类进行扫描,并用于构建bean定义,初始化Spring容器。
     @Configuration标注在类上,@Configuration等价于spring的xml配置文件中的Beans节点

如何把一个bean注册到IOC容器中?

下面通过一个小小的Demo来演示通过@Configuration 与 @Bean结合,将Bean注册到Spring ioc 容器。
1、先定义一个Bean

//User 实体类
@Data
public class User {
    private String name;
    private String pwd;

    public String toString(){
        return "name:"+this.name + ",pwd:" + this.pwd;
    }
}

2、定义一个@Configuration注解实现类

//MyConfiguration 
@Configuration
public class MyConfiguration {

    public MyConfiguration(){
        System.out.println("容器初始化中....");
    }


    /* @Bean作用在方法上,该方法必须返回一个实体对象,该对象将会被注册到 ioc 容器中
    * 如果没有通过name来指定名称,则默认的Bean对象名和方法名相同
    *  */
    @Bean
    public User getUser(){
        User user = new User();
        user.setName("cong");
        user.setPwd("123456");
        return user;
    }

}

3、在Main方法中测试

    //Main方法
    public static void main(String[] args) {
        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(MyConfiguration.class);
        //从ioc 容器中获取bean
        User user = (User) applicationContext.getBean("getUser");
        System.out.println( user.toString());

    }

结果如下
在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐