Spring SpEL系列二 @Value,xml, Java代码使用SpEL

本文介绍了Spring Expression Language (SpEL)的三种使用方式:通过@Value注解、XML配置以及Java代码直接调用。文中详细展示了如何使用SpEL进行字符串拼接、访问JavaBean属性、获取对象属性、比较值等操作,并提供了相应的测试代码示例,最终总结了这三种方式的相同效果。
摘要由CSDN通过智能技术生成

1. 概述

在上文Spring SpEL系列一 基础用法中,通过@Value演示如何使用Spring EL。Spring除了使用@Value,还可以使用xml和java代码直接调用Spring EL。

下文分别使用以上三种方式实现以下功能:
1. 调用String的concat方法
2. 调用JavaBean的属性
3. 访问对象公共属性
4. 获取People的name值,
5. 比较name值是不是hry的结果

以下例子中会使用到的公共类:

public class People{
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

2. 测试代码

2.1 @Value

这是使用最多的场景
SpELAnnotationExample 直接通过@value注入Spring EL表达式的值,详细见代码。

@Component
public class SpELAnnotationExample {
   
    @Value("#{ 'Hello World'.concat('!') }")
    private String stringMethod; // 调用String的concat方法
    @Value("#{ T(java.util.Arrays).toString('Hello World'.bytes) }")
    private String javaBeanProperties; // 调用JavaBean的属性,如这里实际是调用getBytes()方法
    @Value("#{ 'Hello World'.bytes.length }")
    private long publicAttr; // 访问对象公共属性
    @Value("#{ people.name }")
    private String objName; // 获取People的name值,比较name值是不是hry
    @Value("#{ people.name=='hry' }")
    private boolean objNamecmp;  // 比较name值是不是hry人结果

    @Override
    public String toString(){
        return JSON.toJSONString(this);
    }
 // set/get略
}

SpELAnnotationApplication 启动类:
通过 @Configurable初始化People对象,用于@value的对象属性注入的来源。

@SpringBootApplication
@Configurable
public class SpELAnnotationApplication {
   

    public static void main(String[] args) {
        SpringApplication.run(SpELAnnotationApplication.class, args);
    }


    /**
     * 初始化对象
     * @return
     */
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值