springBean了解 1. 定义springBean 2. Beandefinition 元信息 3. 命名spring bean 4. spring bean的别名 5. 注册spring Beandefinition 注册BeanDefinition 方式 1. xml <beans> <description>ggBall的bean工厂</description> <import resource="textBean.xml"/> <alias name="veryComplexDomain" alias="vcd"/> <bean id="user" class="com.zhu.entity.User" > <constructor-arg index="0"> <ref bean="son"/> </constructor-arg> </bean> <bean id="son" class="com.zhu.entity.Son"> <property name="id" value="1"/> <property name="name" value="小名"/> </bean> </beans> 2. 注解 (@Bean,@Component,@Import) @Configuration @Import(User.class) public class Config { @Bean public User user(){ return new User(); } @Bean public Son son() { return new Son(); } } 3. java Api BeanDefinitionRegistry#registerBeanDefinition /** * 命名方式 注册BeanDefinition * registry.registerBeanDefinition(beanName,beanDefinition); * @param registry * @param beanName * @param classBean */ public static void registerBeanDefinition(BeanDefinitionRegistry registry,String beanName,Class classBean) { BeanDefinitionBuilder definitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(classBean); definitionBuilder.addPropertyValue("name","xxx") .addPropertyValue("id","1"); AbstractBeanDefinition beanDefinition = definitionBuilder.getBeanDefinition(); registry.registerBeanDefinition(beanName,beanDefinition); } BeanDefinitionReaderUtils#registerWithGeneratedName /** * 非命名方式 注册BeanDefinition * BeanDefinitionReaderUtils.registerWithGeneratedName(beanDefinition,registry); * @param registry * @param classBean */ public static void registerBeanDefinition(BeanDefinitionRegistry registry,Class classBean) { BeanDefinitionBuilder definitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(classBean); definitionBuilder.addPropertyValue("name","xxx_1") .addPropertyValue("id","1"); AbstractBeanDefinition beanDefinition = definitionBuilder.getBeanDefinition(); BeanDefinitionReaderUtils.registerWithGeneratedName(beanDefinition,registry); } 6. 实例化spring bean 我个人理解bean的元信息是Bean初始化时所需要的配置参数。
...