-
直接编码方式
其实后面的几种方式,最终本质上用的也是这种方式
示例
public static void main(String[] args) { DefaultListableBeanFactory beanRegistry = new DefaultListableBeanFactory(); BeanFactory container = (BeanFactory)bindViaCode(beanRegistry); FXNewsProvider newsProvider = (FXNewsProvider)container.getBean("djNewsProvider"); newsProvider.getAndPersistNews(); } public static BeanFactory bindViaCode(BeanDefinitionRegistry registry) { // 创建好需要的对象 AbstractBeanDefinition newsProvider = new RootBeanDifinition(FXNewsProvider.class, true); AbstractBeanDefinition newsListener = new RootBeanDifinition(DowJonesNewsListener.class, true); AbstractBeanDefinition newsPersister = new RootBeanDifinition(FXNewsPersister.class, true); // 将bean定义注册到容器中 registry.registerBeanDefinition("djNewsProvider", newsProvider); registry.registerBeanDefinition("djListener", newsListener); registry.registerBeanDefinition("djPersister", newsPersister); // 指定依赖关系 // 1. 通过构造器注入 ConstructorArgumentValues argValues = new ConstructorArgumentValues(); argValues.addIndexedArgumentValue(0, newsListener); argValues.addIndexedArgumentValue(1, newsPersister); newsProvider.setConstrucorArgumentValues(argValues); // 2. 通过setter方法注入 MutablePropertyValues propertyValues = new MutablePropertyValues(); propertyValues.addPropertyValue(new PropertyValue("newsListener", newsListener)); propertyValues.addPropertyValue(new PropertyValue("newsPersister", newsPersister)); newsProvider.setPropertyValues(propertyValues); // 绑定完成 return (BeanFactory)registry; }
-
外部配置文件方式
未完待续