首先是一些设置信息:
我有一个基于多租户弹簧的应用程序。多租户启用库是一个内部开发的工具,我工作,我必须使用。工作原理是有一个拦截器设置在应用程序的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做一些不打算做的事情,要么就是这么简单,我看不到它,因为我已经盯着它看了太长时间。无论如何,谢谢你的帮助。
答案 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;