拥有使用Spring DI applicationContext.xml声明依赖项注入的方式的经验,我现在尝试弄清楚如何使用Java EE6
CDI进行相同的操作。
使用Spring,我可以将.jar附带几个配置文件,例如 unittest.xml,devel.xml,qa.xml,production.xml
,并使用命令行参数或环境变量激活它们。
随着CDI,我可以用@Alternative beans.xml文件 和属性的 web.xml中
,但似乎没有出货多的beans.xml不同环境的方式。
我不希望使用Maven配置文件/过滤器来生成4-6版本的应用程序,尽管我知道在某些情况下这将是更好的解决方案(例如,将现成的构建大战运送给客户-
但我仅在内部使用大战,因此让我们节省编译时间!)
最好是,我还能够从文件系统中加载那些配置文件,以便系统管理员可以编辑它们,而不必重新构建应用程序。
具有多个依赖项和属性的配置集的Java EE6方法是什么?
如果没有,到2013年,推荐的替代方案是什么?使用Spring?接缝?帅哥 我看到了提到Apache
DeltaSpike的内容,但是从网页上看,它们仍然看起来像alpha。
我会使用动态生产者,使用Qualifier
来标识所需的环境
// The qualifier for the production/qa/unit test
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD,
ElementType.FIELD, ElementType.PARAMETER})
public @interface Stage {
String value() default "production";
}
// The interface for the stage-dependant service
public interface Greeting{
public String sayHello();
}
// The production service
@Stage("production")
public class ProductionGreeting implements Greeting{
public String sayHello(){return "Hello customer"; }
}
// The QA service
@Stage("qa")
public class QAGreeting implements Greeting{
public String sayHello(){return "Hello tester"; }
}
// The common code wich uses the service
@Stateless
public class Salutation{
@Inject Greeting greeting;
public String sayHello(){ return greeting.sayHello(); };
}
// The dynamic producer
public class GreetingFactory{
@Inject
@Any
Instance<Greeting> greetings;
public String getEnvironment(){
return System.getProperty("deployenv");
}
@Produces
public Greeting getGreeting(){
Instance<Greeting> found=greetings.select(
new StageQualifier(getEnvironment()));
if (!found.isUnsatisfied() && !found.isAmbiguous()){
return found.get();
}
throw new RuntimeException("Error ...");
}
public static class StageQualifier
extends AnnotationLiteral<Stage>
implements Stage {
private String value;
public StageQualifier(String value){
this.value=value;
}
public String value() { return value; }
}
}
因此,此处容器根据系统属性“
deployenv”的决定将所有可用的Greeting
实现注入到中GreetingFactory
,而后者又用作@Producer
预期的实现。
有了Spring DI ApplicationContext.xml声明依赖注入的经验,我现在试图找出如何在Java EE6 CDI中做同样的事情。 使用Spring,我可以将我的.jar附带几个配置概要文件,如unittest.xml、devel.xml、qa.xml、production.xml,并使用命令行参数或环境变量激活它们。 使用CDI,我可以在beans.xml中使用@alterna
我有一个启动应用程序,部署到一个外部tomcat服务器,一切工作在我的本地与本地数据库。现在,我必须将代码推广到数据库配置不同的更高环境。我读了很多关于配置文件的etc...,但是当它是一个外部tomcat并且不使用
1-我有一个带有Spring Boot的API,我需要配置两个DBMS(MySQL和Postgres)。 2-对于每个DBMS,我需要配置不同的配置文件。(Dev,Prod) 遵循我的MySQL配置类: 我以为我的出口是: 重要: 当我将配置文件配置为连接到我的MySQL Dev数据库时,我只想连接到它。我想要同样的结果,当它是MySQL的Prod的基础时。 当我将配置文件配置为连接到我的Post
本文向大家介绍一次Webpack配置文件的分离实战记录,包括了一次Webpack配置文件的分离实战记录的使用技巧和注意事项,需要的朋友参考一下 前言 随着前端技术的发展,业务逻辑的增多及功能化的繁琐已经成为前端人员最烧脑的问题。前端自动化构建工具的出现,为前端人员带来了项目构建上的福音,成为每个前端工程师必回的技术栈,目前比较流行的Webpack以万物皆模块的思想构建我们的前端项目,同样也是笔者正
我正在与: Spring Framework JUnit 分级 我有这两个测试类 null Spring Boot/JUnit,为多个配置文件运行所有单元测试 但是我希望避免通过或使用命令,它通过类保持控件。
多文件配置 自版本4.23.0起,v2ray程序支持使用多个配置文件。 多配置文件的主要作用在于分散不同作用模块配置,便于管理和维护。该功能主要考虑是为了丰富v2ray生态链,比如对于GUI的客户端,一般只实现节点选择等固定的功能,对于太复杂的配置难以图形化实现;只需留一个confdir的自定义配置目录供配置复杂的功能;对于服务器的部署脚本,只需往confdir添加文件即可实现配置多种协议...等