野生蝇注射取决于条件(系统属性)

时间:2018-03-26 09:24:14

标签: dependency-injection annotations wildfly system-properties

我正在与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";

    ???

}

我真的很感激这方面的任何帮助(或者提到一些我可能根本没想过的完全不同的解决方案/模式)。

提前致谢!

1 个答案:

答案 0 :(得分:0)

我终于找到了解决问题的方法!

  

<强>定型

在此处找到stackoverflow的答案:Disable @Alternative classes

  

@Cassio Mazzochi Molin解释编写自己的替代刻板印象