-
直接编码方式
其实后面的几种方式,最终本质上用的也是这种方式
示例
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; } -
外部配置文件方式
未完待续
本文介绍了一种使用 Java 代码直接进行 Spring Bean 的注册与依赖注入的方法,包括 Bean 定义的创建、注册过程及依赖关系的指定。通过构造器和 setter 方法实现依赖注入。
368

被折叠的 条评论
为什么被折叠?



