我正在创建一个位于两个模块上的项目:服务和Web
在使用中,我正在注入具有Web模块中定义的属性的bean。属性取决于Web模块中定义的配置文件。
码头开始时出现了一个弹簧错误,通知我他无法读取属性,因此无法实例化豆。
那么如何在Web模块中声明属性并在服务模块中使用它们?
在服务模块中,我正在注入使用另一个模块中声明的属性的bean
<bean id="universignService"
class="fr.lfm.dna.service.file.document.impl.UniversignServiceImpl"
autowire="byName" init-method="initWebService" lazy-init="true">
<property name="url" value="${ws.universign.url}">
</property>
<property name="username" value="${dna.ws.universign.username}">
</property>
<property name="password" value="${dna.ws.universign.password}">
</property>
</bean>
据我所知,您有2个(ServiceProject和WebProject)maven项目。在ServiceProject中,您要使用WebProject / pom.xml中的属性。问题是Spring对这个文件一无所知。
如果要为多个项目共享这些属性,则很少有选择。我想到的第一个方法是创建一个父Maven项目。这将是一个只有一个pom.xml的项目,您可以在properties
部分中定义属性。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>parent</artifactId>
<version>1.0.SNAPSHOT</version>
<properties>
<dna.ws.universign.username>ABC</dna.ws.universign.username>
<dna.ws.universign.password>XYZ</dna.ws.universign.password>
</properties>
</project>
完成之后,您可以在其他项目中引用该项目。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>web</artifactId>
<parent>
<groupId>com.test</groupId>
<artifactId>parent</artifactId>
<version>1.0.SNAPSHOT</version>
</parent
</project>
因此,您的父项目的属性会包含在您的实际项目中(在我的示例中为com.tests.web。)>
UPD:说到存储用户名和密码,将它们存储在外部* .properties文件中可能更方便,更自然。在这种情况下,您无需创建父项目。尝试看看maven-properies-plugin
。