从POM文件设置Spring applicationContext属性
我的applicationContext.xml文件中有以下配置:从POM文件设置Spring applicationContext属性,spring,maven,Spring,Maven,我的applicationContext.xml文件中有以下配置: <bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:application.prop
<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:application.properties</value>
<value>classpath:database.properties</value>
</list>
</property>
</bean>
<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${smtp.host}" />
</bean>
但是Spring开始抱怨说我在这个地产上有一个圆形占位符引用。我有什么遗漏吗
谢谢 你把这两件事搞混了。
pom.xml
用于构建应用程序。您定义的属性通常与应用程序属性无关。Maven配置文件与Spring配置文件无关。他们只是被平等地命名
您应该按照自己的理解配置Spring应用程序。你可以--我不建议--使用你的pom作为财产来源
通常的方法是从外部化配置读取它。因为我不知道您是否使用Spring引导,如果您使用Spring而不使用引导,您可以查看并调整它
因此,将aplication.properties
文件添加到src/mein/resources中,如
smtp.host=my.smtp.server
如果使用boot,那么就完成了,否则必须添加
@PropertySource("classpath:/application.properties")
在您的
@配置中
混合了应用程序的构建和运行阶段,这两个阶段是相互排斥的
一旦构建完成,Maven的角色就结束了,因此使用的任何属性都会随之消失。此外,应用程序启动与用于构建它的工具/过程无关,因此它们之间没有任何共享信息。因此,使用pom.xml
中指定的属性的想法是不可行的
关于循环引用,语句
smtp.host=${smtp.host}
与java代码inti=i大致相似
基本上没有效果,因为i
被定义并分配给它自己。谢谢。我正在处理的应用程序实际上已经以类似的方式设置了一些其他属性。据我所知,代码试图做的是让Maven将一些属性设置到application.properties中,并让Spring从生成的属性文件中读取。我试图提取在最终EAR文件中生成的文件,似乎有些属性设置正确,但有些属性设置不正确(大部分是新的)。在这种情况下,您需要手动扫描正在执行的pom.xml
中的所有maven目标。在一个自定义目标中,应用程序.properties
似乎是从某个位置写入/复制的,然后打包到EAR中。
smtp.host=my.smtp.server
@PropertySource("classpath:/application.properties")