Spring中使用程序设定Bean以及关联bean
除了xml文件和属性文件以外,我们还可以在程序中直接来配置bean以及bean之间的联系,通过org.springframework.beans.MutablePropertyValues设置属性,然后将属性与Bean的类设置给org.springframework.beans.beans.factory.support.RootBeanDefinition,最后通过org.springframework.beans.factory.support.BeanDefinitionRegistry来注册Bean,下面我们还是以人物Role为实例:
public class TestBeanByProgrammer {public static void main(String[] args) {//通过MutablePropertyValues来设置属性MutablePropertyValues properties=new MutablePropertyValues();//设置name属性值为Maryproperties.addPropertyValue("name","Mary");//设置health属性值为100properties.addPropertyValue("health", 100);//将properties赋予给Role类RootBeanDefinition definition=new RootBeanDefinition(Role.class,properties);BeanDefinitionRegistry reg=new DefaultListableBeanFactory();//注册bean,设置bean的别名为role,相当与xml配置文件的idreg.registerBeanDefinition("role", definition);BeanFactory factory=(BeanFactory)reg;Role role=(Role)factory.getBean("role");System.out.println("人物名称是:" + role.getName() + ",人物的生命值是:"+ role.getHealth());if (role.getGoods() != null) {System.out.println(role.getName() + "现有物品" + role.getGoods().size()+ "件" + ",分别为:");for (Goods obj : role.getGoods()) {System.out.println(obj.getName());}} elseSystem.out.println("暂时没有任何物品!");}}