我正在与Wildfly atm合作,我正试图进入@Annotations。 对于某些接口有多个实现,我希望我的应用程序根据某些条件选择某个实现(取决于我的standalone.xml中指定的系统属性)。
您能否指点一些提示,以了解如何实现此类行为。
我不想直接将实现指定为@Alternative,因为我想将各种注入与一些系统属性设置捆绑在一起。
<system-properties>
<property name="env" value="stage"/>
</system-properties>
public interface LoginServerDao {
public String test();
}
@MyCustomConditionalAnnotation(env = "live")
public class LoginServerDaoImpl implements LoginServerDao {
@Override
public String test() {
return "live";
}
}
@MyCustomConditionalAnnotation(env = "stage")
public class DummyLoginServerDaoImpl implements LoginServerDao {
@Override
public String test() {
return "dummy";
}
}
@???
public @interface MyCustomConditionalAnnotation {
String env() default "test";
???
}
我真的很感激这方面的任何帮助(或者提到一些我可能根本没想过的完全不同的解决方案/模式)。
提前致谢!
答案 0 :(得分:0)
我终于找到了解决问题的方法!
<强>定型强>
在此处找到stackoverflow的答案:Disable @Alternative classes
@Cassio Mazzochi Molin解释编写自己的替代刻板印象