Java Spring自动装配配置文件
问题描述:
我有一个班可以说类A这是一个配置类,只有在配置文件“生产”被激活时才能运行。但在类B其中应用程序的主要逻辑是我使用的@Autowired注释,指的是在类A创建一些豆,我的问题是,当我运行应用程序与配置文件可以说“默认“它会抛出异常,因为没有创建相应的bean。所以我的问题是,只有当配置文件“生产”处于活动状态时,我如何才能在我的B类中使用此Autowired?Java Spring自动装配配置文件
答
提供你有一个接口的两个实现:
public interface A {}
@Component(value="A_dev")
public class ADev implements A {}
@Component(value="A_prod")
public class AProd implements A {}
public class B {
@Autowired @Qualifier("A") A a;
}
添加别名为一个XML配置和属性占位符:
<beans>
<alias name="${a.class}" alias="A"/>
<context:property-placeholder location="app.properties"/>
<beans>
app.properties应该包含
a.class=A_dev
然后改变propertiy会改变你的注入类(应用程序重新启动是必需的)。
还有其他解决方案,例如:
- 与行家(建立时间)过滤XML上下文
- 创建bean工厂返回不同的A的实现取决于东西
- 使用弹簧EL#{表达}
答
我不明白你的问题。但是如果您需要注入可选bean,则可以使用@Autowired(required = false)
,然后在没有任何合格bean的环境中,相关属性将为空。
根据您的使用情况,创建一个2类实现的接口。一个是真正的课堂,另一个是没有课堂的课程。 – Schaka