文章目录
- 1. 简介
- 2. 作用
- 3. 使用
- 3.1 创建并实现接口
- 3.2 配置 Bean
- 3.3 创建启动类
- 3.4 启动
- 4. 应用场景
- 总结
Spring 框架提供了许多回调接口,以便开发者在 Bean 的生命周期中执行一些特定操作。其中之一是
EmbeddedValueResolverAware
接口,本文将深入探讨这个接口的作用、用法,以及在实际开发中的应用场景。
1. 简介
在 Spring 框架中,EmbeddedValueResolverAware
接口是一个回调接口,用于获取 EmbeddedValueResolver
对象,该对象可用于解析占位符表达式。
源码如下
2. 作用
该接口的主要作用是允许 Bean 在运行时获取 EmbeddedValueResolver
对象,从而解析包含在 Bean 定义中的占位符表达式。
3. 使用
要让一个Bean实现 EmbeddedValueResolverAware
接口,需要按以下步骤进行
3.1 创建并实现接口
package org.example.cheney;
import org.springframework.context.EmbeddedValueResolverAware;
import org.springframework.util.StringValueResolver;
public class DemoBean implements EmbeddedValueResolverAware {
@Override
public void setEmbeddedValueResolver(StringValueResolver resolver) {
String result = resolver.resolveStringValue("Hello, ${user.name}!");
System.out.println("【EmbeddedValueResolverAware】 解析的占位符是: " + result);
}
}
3.2 配置 Bean
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"
>
<bean id="demoBean" class="org.example.cheney.DemoBean" />
</beans>
3.3 创建启动类
package org.example.cheney;
import org.springframework.context.support.AbstractXmlApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App {
public static void main(String[] args) {
String location = "applicationContext.xml";
try (AbstractXmlApplicationContext context = new ClassPathXmlApplicationContext(location)) {
System.out.println("End.");
}
}
}
3.4 启动
输出结果:
此处显示的是系统环境变量的计算机用户名
4. 应用场景
EmbeddedValueResolverAware
接口通常用于以下场景:
-
解析占位符:
当一个 Bean 需要在运行时解析包含在配置文件或注解中的占位符表达式
-
动态构建字符串:
通过解析占位符,Bean可以动态构建字符串,根据不同的属性值生成最终的字符串
总结
EmbeddedValueResolverAware
接口为开发者提供了一种获取EmbeddedValueResolver
对象的机会,该对象可用于解析占位符表达式。通过实现该接口,Bean 可以在初始化阶段获取解析占位符的能力,从而更灵活地处理一些与动态属性值相关的逻辑。