引用spring配置中的值

时间:2015-05-08 16:17:19

标签: java spring multi-tenant

首先是一些设置信息:

我有一个基于多租户弹簧的应用程序。多租户启用库是一个内部开发的工具,我工作,我必须使用。工作原理是有一个拦截器设置在应用程序的servlet前面。在请求命中servlet时,它会加载一个特定于租户的弹簧配置,用于" stuff"在URL上指定的租户需要访问servlet。

如上所述,以上只是一些背景知识。现在问题/问题:

我想要做的是在加载的租户配置中创建一个值,我可以用它来注入我需要的地方。那么,有没有一种方法可以在spring配置中定义一个常量,然后在java代码中通过@Value@Resource引用它?

它背后将没有bean实现,它只是纯粹而且只是一个键/值,我可以通过名称引用我的应用程序所需的位置。所以,有一些效果:

<bean name="MyIdentifier">
    <property name="theId" value="1001" />
</bean>

然后我可以做点什么吗?

@Value{MyIdentifier.theId}
String theId;

让Spring注意并注入价值。问题是,像上面这样做的东西抱怨没有bean的实现。注意,没有为bean指定类。我想这样做的原因是每个租户配置文件都包含这个bean,但每个租户的实际值会有所不同。

配置中是否还有其他类型可以使用?如果是这样,配置上必须有哪些模式?

我猜我要么让Spring做一些不打算做的事情,要么就是这么简单,我看不到它,因为我已经盯着它看了太长时间。无论如何,谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

如果不提供类实现,则无法在配置文件中创建bean标记。如果要注入字段的值,则必须改为使用属性文件。

创建属性文件,如下所示:

<强> application.properties

theId=1001

在配置中加载属性文件:

 <bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
        <property name="ignoreUnresolvablePlaceholders" value="true"/>
        <property name="locations">
          <list>
            <value>classpath:application.properties</value>
          </list>
        </property>
      </bean>

访问具体类中的属性:

  @Value("${theId}")
    String theId;