【问题标题】:@PropertySource and Application context name@PropertySource 和应用程序上下文名称
【发布时间】:2015-10-01 19:53:28
【问题描述】:

我有一个@Configuration 类。 这个类,有一个@PropertySource。

我希望每个应用程序都有一个不同的属性。

例子:

@Configuration
@PropertySource("file:${my.properties-file}")
public class Config {
}

我想通过上下文名称为每个应用程序配置每个属性。

我的应用服务器目录结构:

webapps/
     my-app-a.war
     my-app-b.war

两者(my-app-a.war 和 my-app-b.war)都是同一个 Web 应用程序,不同之处在于它们在不同的上下文中部署了两次。

因此,我需要配置这 2 个属性:

my.properties.my-app-a=/source/properties/a.properties
my.properties.my-app-b=/source/properties/b.properties

如何创建自定义属性源解析器以注入/考虑应用程序上下文名称以加载属性文件?

【问题讨论】:

  • 这对我来说有点不清楚,您尝试过这个并且没有效果吗?还是它有效但工作量太大?还有更好的方法来为单个战争拥有多个上下文,然后多次重命名和部署它。这也与 SpEL 无关,因为这里只有属性占位符,而不是 SpEL。
  • 是的@M.Deinum,我改变了问题。我错了,我以为SpEL是用来解析属性源位置的。
  • 不要使用@PropertySource,而是使用ApplicationContextInitializer,并手动注册PropertySource

标签: java spring configuration spring-environment


【解决方案1】:

您是否尝试过使用弹簧配置文件? 或者使用 maven,您可以将您的属性放在 pom 中,并根据配置文件来构建您的战争,它们将被插入到属性文件中

【讨论】:

  • 不,我不能这样做。弹簧配置文件将由每个 .properties 配置
【解决方案2】:

我解决了为每个应用程序设置上下文配置的问题。

Apache Tomcat 8 Configuration Reference - Defining a context

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    相关资源
    最近更新 更多