java - 使用 Spring 在 Java 中创建运行时对象

标签 java spring

假设我有两个用 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/

相关文章:

java - 如何获得跟踪图像的角落?

spring boot 使用 redis 作为缓存,我可以使用 keyGenerator 但使用 key 失败

java - spring验证的配置是什么?

java - 嵌套 do while 循环的 Junit 测试用例

java - Apache-Camel Quartz simpleTrigger重复计数和重复间隔在第一次触发事件fireNow后不触发事件

Java 应用程序在 IDE 目录之外无法正常工作

java - 我可以在 Android 中以编程方式滚动 ScrollView 吗?

java - 对不遵循 SOLID 原则的类进行部分模拟(尤其是依赖注入(inject))

java - 单独模块中使用的 Spring AOP 切面

java - 使用 HSQL 请求父实体时过滤一对多子实体