spring 组件注册
一、声明配置类和注册 bean
/** * 配置类 == applicationContext.xml 配置文件 * @author Administrator * */ //@Configuration 告诉 spring 这是一个配置类 @Configuration //@ComponentScan:value 配置扫描的包;excludeFilters 按照一定规则排除包;includeFilters 只包含 //excludeFilters = {@Filter(type = FilterType.ANNOTATION,classes={Controller.class})} @ComponentScan(value = "com.fw",includeFilters = { @Filter(type = FilterType.ANNOTATION,classes={Controller.class}) },useDefaultFilters = false) public class MainConfig { @Bean("person") //给容器中注册一个 Bean;类型为返回值的类型,id 默认以方法名作为 id public Person person(){ return new Person("lisi", 18); } }
二、通过配置类创建 spring 容器
@Testpublic void test1(){ AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig.class); Person person = applicationContext.getBean(Person.class); System.out.println(person); }
三、@Scope 指定bean的作用域
/** * @Scope: * prototype:多实例的:ioc 容器在启动的时候并不会调用方法创建对象,而是每次获取的时候才会去调用方法 * singleton:单实例的:默认值,ioc 容器在启动的时候就会调用这个方法去创建对象,以后每次获取对象直接从容器中拿 */ @Scope("singleton") @Bean("person") public Person person(){ return new Person("lisi", 18); }
四、@Lazy 懒加载
/** * @Lazy:懒加载:只针对单实例 @Scope("singleton") * 单实例的 bean:默认在容器启动的时候创建对象 * 懒加载:容器启动的时候不创建对象.而是在第一次使用(获取)bean 的时候才创建对象,并初始化 */ //@Scope("singleton") @Lazy @Bean("person") public Person person(){ return new Person("lisi", 18); }
五、