创建一个配置类
@Configuration
public class test1Config {
@Bean
public User user1(){
return new User("wawawa", 1);
}
}
注解
- @Bean:给容器添加组件,方法名为id,返回值类型为组件类型。组件id可以通过@Bean("···")这种方式重新定义。
指定组件id为"user2",这时通过方法名"user1"从容器中获取实例就会报错:没有找到名为user1的bean。
- @Configuration:指定哪个类是配置类,在SpringBoot 2以后增加了一个proxyBeanMethods属性,默认为true。
proxyBeanMethods为true:通过配置类对象调用方法创建对象时,会先从容器中查找是否注册了bean,如果注册了就不会重新创建一个新的对象
先获取配置类的对象,再通过调用两次方法测试,对比发现相同,是单实例对象。
proxyBeanMethods为false:通过配置类对象调用方法创建对象时,不会查找容器中是否注册了bean,而只是调用方法,创建了两个不同的对象
对比发现两个对象并不相同,所以不是从容器中获取到的。 - @import:导入组件到容器,默认组件名为全限定类名。
- @Conditional:条件装配
- @ImportResource:导入Spring配置文件到配置类中
- @ConfigurationProperties:根据条件装配到bean指定属性中,两种实现方式:
第一种
第二种
上面的两种用法都能实现