文件内容people.properties:
knight.age=34
knight.name=Pedro
文件内容annotationsBased.xml:
<context:property-placeholder location="classpath:people.properties"/>
<bean class="ru.miron.SOWithDocs.Entities.Person" id="knightCreatedUsingPropertiesFile">
<constructor-arg name="age" value="${knight.age}"/>
<constructor-arg name="name" value="${knight.name}"/>
</bean>
收到后:
ApplicationContext XMLcontext = new ClassPathXmlApplicationContext("annotationsBased.xml");
System.out.println("Knight created using properties file - " + XMLcontext.getBean("knightCreatedUsingPropertiesFile"));
输出如下:
Knight created using properties file - Person [age=34, name=Pedro]
这意味着文件中的属性已成功加载到SpEL.
为什么在下一步执行以下代码时:
System.out.println(XMLcontext.getEnvironment().getProperty("knight.age"));
结论—— null?
有两种接口方法
Environment可以使用以下方法获取此类属性SpEL:它们略有不同。
.resolveRequiredPlaceholders(text):resolvePlaceholders(text):执行以下代码行时:
我们得到输出:
这是最简单的让。您还可以使用注释检查这一点
@PropertySource:并且在执行以下代码时:
输出将是:
答案基于这篇文章。
文章对题目进行了更详细的分析。
该文件
properties连接到spring配置类中的上下文并写入 beanEnvironment。请参阅Spring 和 Spring Boot 的属性。然后可以将这个 bin 注入到任何其他 bin 中。例如,在同一个地方,在配置类中:
或者在控制器类的构造函数中:
如果有很多带有属性的文件,那么在连接每个文件时,我们为其指定一个名称:
添加豆
propertySources:然后我们从这个bean中获取属性:
示例:骑士项目
项目结构:
控制器.java
客户端: index.html
人.java
WebAppConfig.java
骑士1.properties
骑士2.properties
pom.xml