【发布时间】:2018-03-26 09:24:13
【问题描述】:
我正在使用 Wildfly atm,并且正在尝试使用 @Annotations。 对某些接口有多个实现我希望我的应用程序根据某些条件(取决于我的standalone.xml 中指定的系统属性)选择某个实现。
您能否指出一些提示以了解如何实现此类行为。
我不想直接将实现指定为@Alternative,因为我想将各种注入与一些系统属性设置捆绑在一起。
standalone.xml
<system-properties>
<property name="env" value="stage"/>
</system-properties>
界面
public interface LoginServerDao {
public String test();
}
实施1
@MyCustomConditionalAnnotation(env = "live")
public class LoginServerDaoImpl implements LoginServerDao {
@Override
public String test() {
return "live";
}
}
实施 2
@MyCustomConditionalAnnotation(env = "stage")
public class DummyLoginServerDaoImpl implements LoginServerDao {
@Override
public String test() {
return "dummy";
}
}
注解接口
@???
public @interface MyCustomConditionalAnnotation {
String env() default "test";
???
}
我非常感谢您对此提供的任何帮助(或参考一些我什至可能没有想到的完全不同的解决方案/模式)。
提前致谢!
【问题讨论】:
-
@James 感谢您的回复!我很抱歉我确定我已经回复了!一定错过了点击“添加评论”按钮。关于你的提示:这正是我想要使用的。我已经在为我的 DAO 使用过滤器、启动 Hooks 和注入。但是,我在上面的示例中找不到有关如何实现我想要实现的目标的提示。也许生产者方法是我正在寻找的。无论如何,非常感谢您的回复! :)
标签: dependency-injection annotations wildfly system-properties