无法从另一个模块读取属性

问题描述 投票:0回答:1

我正在创建一个位于两个模块上的项目:服务和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>
spring module properties javabeans
1个回答
0
投票

据我所知,您有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

© www.soinside.com 2019 - 2024. All rights reserved.