浅谈SpringBoot源码 --- @SpringBootConfiguration的作用
源码分析 @SpringBootConfiguration可以简单的理解为就是一个@Configuration注解,表示当前类是一个配置类,通过@Configuration 与 @Bean结合,将Bean注册到Spring ioc 容器。@SpringBootConfiguration的源码如下@Target({ElementType.TYPE}...
源码分析
@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());
}
结果如下
更多推荐
所有评论(0)