bean加载方式
第一种加载方式
- XML方式声明bean
第二种加载方式
- 使用@Component及其衍生注解@Controller,@Service,@Repository定义bean
- 使用@Bean定义第三方bean,并将所在类定义为配置类或Bean
第三种加载方式
注解方式声明配置类
@Configuration配置项如果不用于被扫描可以省略
扩展1
初始化实现FactoryBean接口的类,实现对
bean加载到容器之前的批处理操作public class BookFactoryBean implements FactoryBean
{
Book book = new Book();
return book;
}
public Class<?> getObjectType() {
return Book.class;
}public class SpringConfig {
@Bean
public BookFactoryBean book() {
return new BookFactoryBean();
}}
使用Configuration中的属性proxyBeanMethods=true可以保障调用此方法得到的对象是从容器中获取的而不是重新创建的(这个为默认方法)
@ImportResource 加载配置类并加载配置文件(系统迁移)
第四种加载方式
- 使用@Import(类.class)
第五种加载方式
使用上下文对象在容器初始化完毕后注入bean
public class AppImport {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Springxxx.class);
context.register(类.class);
}
}
第六中加载方式
- 导入实现了ImportSelector接口的类,实现对导入源的编程式处理
第七种加载方式
导入实现了ImportBeanDefinitionRegistrar接口的类,通过BeanDefinition的注册器注册实名bean,实现对容器中bean的栽定,例如对现有bean的覆盖,进而达成不修改源代码的情况下更换实现的效果
第八种加载方式
导入实现了BeanDefinitionRegistryPostProcess接口的类,通过BeanDefinition的注册器注册实名bean实现了对容器中bean的最终裁定
##bean的加载控制
- 使用@ConditionalOn***注解为bean的加载设置条件