我试图找出如何通过Spring(4.0.3)从数据库表加载我的所有应用程序属性。现在我的应用程序有一组属性文件(大约十几个)。这些属性文件是每个环境的重复(而不是值)。采取以下:
config.jar
这是xml config的一个片段:
<util:properties id="inboundErrorCodes"
location="classpath:config/${spring.profiles.active}/inErrCodes.properties"/>
<util:properties id="outboundErrorCodes"
location="classpath:config/${spring.profiles.active}/outErrCodes.properties"/>
<util:properties id="reportProperties"
location="classpath:config/${spring.profiles.active}/report.properties"/>
<util:properties id="emailProperties"
location="classpath:config/${spring.profiles.active}/email.properties"/>
然后在源文件中使用:
...
import javax.inject.Inject;
import javax.inject.Named;
@Named("testService")
public class TestServiceImpl implements TestService {
private Properties inboundErrorCodes = null;
private Properties outboundErrorCodes = null;
private Properties reportProperties = null;
private Properties emailProperties = null;
@Inject
public TestServiceImpl(@Named("inboundErrorCodes") final Properties inboundErrorCodes,
@Named("outboundErrorCodes") final Properties outboundErrorCodes,
@Named("reportProperties") final Properties reportProperties,
@Named("emailProperties") final Properties emailProperties ) {
其他一些警告。 errorCodes文件中的某些属性具有相同的键。例如
inErrorCodes.properties
error.code.1001=bad file name.
outErrCodes.properties
error.code.1001=bad header info.
理想情况下,所有密钥在所有文件中都是唯一的,但这是一个遗留应用程序。所以我希望得到的是拥有一个数据库表(来自所有envs的jndi除了本地,它只是一个数据源)。该表可能看起来像(表名= APP_PROPERTIES)
id key value category
== =============== ============= ============
1 error.code.1001 bad file name. inErrorCodes
2 error.code.1001 bad header info. outErrorCodes
3 default.subject Successful order email
4 sales.title NE Sales Region report
其他一些事情。我更喜欢在xml配置上使用注释。我想找到一种方法使属性可重新加载。如果其中一个值在数据库中更新,那么如果我可以调用Spring函数来重新加载,或者甚至可能是一些池化机制,那将会很棒。当然,这取代了重新启动应用程序。另外,上面提到的$ {spring.profiles.active}是一个JVM变量(在应用程序服务器控制台中设置),必须在每个环境中设置。任何指针都会非常感激。我在Spring @PropertySource上搜索了一下,但找不到与我正在尝试的内容有关的任何内容。
再次感谢,
答案 0 :(得分:0)
我希望这可以帮到你,不是4.0.3,但它有效。
http://pure-essence.net/2011/02/10/spring-loading-properties-from-database-with-a-twist/