一.什么spring-bean:
Spring bean是Spring框架在运行时管理的对象。Spring bean是任何Spring应用程序的基本构建块。你编写的大多数应用程序逻辑代码都将放在Spring bean中。
Spring bean的管理包括:
- 创建一个对象
- 提供依赖项(例如其他bean,配置属性)
- 拦截对象方法调用以提供额外的框架功能
- 销毁一个对象
二:如何定义spring-bean
如你所知,Spring负责创建bean对象。但首先,你需要告诉框架它应该创建哪些对象。你是怎么做到的?
创建bean的几种方式:
(1):通过xml配置文件
创建bean.xml
测试:
打印结果:
(2):基于@Configuration 和@bean注解
说明:
@Configuration相当于配置文件中的<beans />标签,里面可以配置bean。表示该类为一个配置文件类
@bean:用@Bean注解的方法,会实例化、配置并初始化一个新的对象,这个对象会由spring IoC 容器管理。Bean可理解为用spring的时候xml里面的<bean>标签
创建配置类:
测试:
打印结果:
(3):基于@Configuration, @ComponentScan 和@Componet、@service 、@controller、@Repository 注解方式
说明:@Repository 据访问层,也可以说用于标注数据访问组件,即DAO组件.
@Componet:把普通pojo实例化到spring容器中,相当于配置文件中的bean
创建注入的bean:
创建配置类:
运行打印:
输出结果:
(4):基于@Configuration 和@Import注解
说明:@Import 将类导入到springIOC容器中,其他说明请自行百度
(5):基于@Configuration 加@Import 和ImportSelector 接口
ImportSelector接口主要作用是收集需要导入的配置类,如果该接口的实现类同时实现EnvironmentAware, BeanFactoryAware ,BeanClassLoaderAware或者ResourceLoaderAware,那么在调用其selectImports方法之前先调用上述接口中对应的方法,如果需要在所有的@Configuration处理完在导入时可以实现DeferredImportSelector接口
创建application.properties:
创建MyImportSelector 实现ImportSelector,EnvironmentAware:
创建配置类:
说明:@PropertySource注解加载指定的属性文件
测试打印:
若改为:
输出结果:空指针异常:
(6):基于@Configuration 加@Import 和ImportBeanDefinitionRegistrar接口
创建ImportBeanDefinitionRegistrar:
创建配置类:
测试打印: