我在user_directory/.m2
文件夹中有一个settings.xml文件。我在settings.xml
中设置了一个属性。我希望它在spring.xml
中访问它。
setting.xml
<profiles>
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<testName>Test</testName>
</properties>
</profile>
</profiles>
在pom.xml中我写过
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
我是否必须在src / main / resources文件夹中创建test.properties
文件。
name = ${testName}
在spring.xml
我用它作为
<context:property-placeholder location="classpath:src/main/resources/test.properties"/>
<bean class="java.lang.String" id="nameTest">
<constructor-arg value="name"/>
</bean>
run.Exception是
线程“main”中的异常 org.springframework.beans.factory.BeanInitializationException:可以 不加载属性;嵌套异常是 java.io.FileNotFoundException:类路径资源 无法打开[src / main / resources / test.properties],因为它确实如此 不存在
出了什么问题。如何从settings.xml
到spring.xml
访问属性。
答案 0 :(得分:0)
我看到几点:
property-placeholder
的位置属性是指类路径上的文件,但您想在文件系统上使用文件,因此它必须是这样的:
<context:property-placeholder location="file:///user_directory/.m2/settings.properties"/>
您的设置文件是XML。默认情况下,实际上是Java属性格式的文件。可能有使用自定义XML的方法,但我不熟悉。因此,您的XML文件将转换为以下内容:
profile.id = default
profile.activation.activateByDefault = true
profile.properties.testName = Test
...
稍后在spring.xml
引用您的媒体资源时,您只需使用${profile.id}
放置settings.properties
文件中的ID值。
答案 1 :(得分:0)
您错误配置了财产占有者。 src / main / resource不在你的类路径中,你应该输入类似的东西:
<context:property-placeholder location="classpath:test.properties"/>
对于上下文的配置,您可以:
一个。直接过滤你的春天语境:
<bean class="java.lang.String" id="nameTest">
<constructor-arg value="${testName}"/>
</bean>
湾或者过滤test.properties配置文件,然后将其作为属性占位符注入spring.xml:
test.properties:
spring.testName=${testName}
spring.xml:
<context:property-placeholder location="classpath:test.properties"/>
<bean class="java.lang.String" id="nameTest">
<constructor-arg value="${spring.testName}"/>
</bean>