文章目录
BeanDefinition
就先简单的学习一下BeanDefinition吧!
配置Bean定义的几种方式
- XML
- 配置类
- 类注解
BeanDefinition家族
RootBeanDefinition
<bean id="parentBean" class="com.example.ParentBean">
<property name="stringProperty" value="stringValue"/>
</bean>
XML配置一:Spring 会将的parentBean
信息存放在RootBeanDefinition的实例对象中!
ChildBeanDefinition
<bean id="childBean" parent="parentBean">
<property name="anotherStringProperty" value="anotherStringValue"/>
</bean>
XML配置二:继承其他的Bean定义parentBean
而形成全新的Bean定义childBean
,并新增了anotherStringProperty
属性,Spring 会将的childBean
的信息存放在RootBeanDefinition的实例对象中!
GenericBeanDefinition
@Configuration
public class AppConfig {
@Bean
public MyComponent myComponent() {
return new MyComponent();
}
}
配置类中使用@Bean注解定义了一个bean,Spring加载该Bean信息是,会保存在GenericBeanDefinition的实例对象中
AnnotatedBeanDefinition
@Component("xm")
public class MyComponent {
// some fields and methods
}
类上有一个@Component注解。当Spring解析这个类时,会创建一个AnnotatedBeanDefinition对象。这个AnnotatedBeanDefinition对象会保存类名(这也是bean的名字)、类的类型,以及类上的所有注解信息
比如:AOP代理、事务管理…