从 spring 配置中引用一个值

Referencing a value from a spring config

首先是一些设置信息:

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

如前所述,以上只是一些背景知识。现在到 issue/question:

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

它背后不会有 bean 实现,它只是一个纯粹的 key/value,我可以在我的应用程序中按名称在需要的地方引用它。所以,效果是:

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

然后我可以做类似的事情吗?

@Value{MyIdentifier.theId}
String theId;

并让 Spring 了解并注入值。问题是做类似上面 Spring 的事情会抱怨没有针对该 bean 的实现。注意,没有为 bean 指定 class。我想这样做的原因是每个租户配置文件都将包含这个 bean,但实际值会因租户而异。

配置中是否有其他类型可用于执行此操作?如果是这样,配置中必须包含哪些架构?

我猜我要么试图让 Spring 做一些不想要的事情,要么,这太简单了,我看不到它,因为我盯着它看得太久了。无论如何,感谢您的帮助。

如果不提供 class 实现,则无法在配置文件中创建 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>

并在您的具体 class:

中访问 属性
  @Value("${theId}")
    String theId;