【Spring】12 EmbeddedValueResolverAware 接口

发布时间:2023年12月19日


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 可以在初始化阶段获取解析占位符的能力,从而更灵活地处理一些与动态属性值相关的逻辑。

文章来源:https://blog.csdn.net/yanyc0411/article/details/135071017
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。