假设我有两个用 Java 定义的类,即 MyRealClass 和 MyMockClass。它们都实现了相同的接口(interface),即MyInterface。
现在我需要根据条件(我的 spring 配置 xml 文件中可用的变量)实例化任一类的对象,如下所示:
if ${env} = 'A', then do, MyInterface mObj = new MyMockClass(...),
if ${env} = 'B', then do, MyInterface mObj = new MyRealClass(...),
我该如何实现这一目标?我可以通过条件 bean 实现此目的吗?
请帮忙。
最佳答案
我认为您正在寻找类似 @Profile
annotation of Spring 的内容。这样,您就可以定义 MyInterface
类型的 bean,并通过在程序启动时传递配置文件参数来加载适当的一个。
您的 XML 将如下所示:
<beans profile="A">
<bean id="myMock" class="MyMockClass" />
</beans>
<beans profile="B">
<bean id="myReal" class="MyRealClass" />
</beans>
然后,您必须使用系统属性 -Dspring.profiles.active=A
启动应用程序,或者直接在 web.xml
中指定它(如果您是)在网络应用程序中:
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>A</param-value>
</context-param>
关于java - 使用 Spring 在 Java 中创建运行时对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20581064/