Nig*_*gel 20 java configuration spring tomcat
我试图找到在Tomcat中运行的Spring webapp中传递复杂配置的最佳方法.目前,我使用JNDI将数据源和字符串从Tomcat上下文传递到webapp,这很有效.
但是,让我说我需要选择通知服务的实现.Spring无法有条件地选择实例化哪个bean(尽管在过去我使用JNDI字符串通过设置contextConfigLocation来导入预定义的bean配置).
我还看到很多webapps提供了一个配置工具,它将创建一个自定义WAR文件.在我看来,这是一种糟糕的形式,如果没有其他原因,它会阻止从上游重新部署WAR而不进行多次检查,以确保所有配置都已重新应用.
理想情况下,我可以在webapp之外提供存在于文件系统上的Spring XML文件.但是,spring import指令似乎没有解决$ {}变量,因此无法提供自定义.
我是否可以使用任何技术将复杂配置与webapp正确分开?
can*_*iru 12
如果我有一组特定的bean我想配置,并且此配置必须与WAR文件分开,我通常会执行以下操作:
在applicationContext.xml中:
<!-- here you have a configurer based on a *.properties file -->
<bean id="configurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="file://${configDir}/configuration.properties"/>
<property name="ignoreResourceNotFound" value="false" />
<property name="ignoreUnresolvablePlaceholders" value="false" />
<property name="searchSystemEnvironment" value="false" />
</bean>
<!-- this is how you can use configuration properties -->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${smtp.host}"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
在configuration.properties中:
smtp.host=smtp.your-isp.com
Run Code Online (Sandbox Code Playgroud)
您还需要使用-DconfigDir =/path/to/configuration /目录启动Tomcat
| 归档时间: |
|
| 查看次数: |
12225 次 |
| 最近记录: |