2013-04-22 62 views
1

我有三个数据库cofinguration吉斯多数据库自动开关

  1. 本地数据库进行单元测试环境
  2. 测试数据库的开发环境
  3. 产品环境在线DB

我怎么能根据环境自动注入不同的数据库属性?

通过使用XML与春天,我可以使用Maven配置文件和资源 过滤功能有这个工作做完。

guice的解决方案是什么?

回答

1

在您可以Module中使用binder.bindConstant()这样最简单的例子:

bindConstant().annotatedWith(Names.named("user.name")).to(System.getProperty("user.name")); 

可以使用此类似这样的:

@Inject @Named("user.name") 
private String userName; 

你如何在程序开始时设置的系统属性你决定。

另一个但类似的方法是效用方法cNames.bindProperties(Binder, Map<String, String>)您可以一次设置任意属性。

+0

当我启动jvm时,我应该传递-Duser.name吗? – jilen 2013-04-23 01:23:06

+0

@jilen这是一种可能的方式。 – 2013-04-23 17:31:44

+0

但如果我使用Jetty/Tomcat,我不想真的更改jetty.sh/startup.sh。我如何将环境传递给我的应用程序? – jilen 2013-04-24 01:43:54