Spring EL method invocation example

本文介绍SpringEL表达式的使用方法,包括通过注解方式引用bean及其属性,并调用其方法;同时提供XML配置文件中定义bean的等效示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

In Spring EL, you can reference a bean, and nested properties using a ‘dot (.)‘ symbol. For example, “bean.property_name“.

public class Customer {
    
    @Value("#{addressBean.country}")
    private String country;

In above code snippet, it inject the value of “country” property from “addressBean” bean into current “customer” class, “country” property.

Spring EL in Annotation

See following example, show you how to use SpEL to reference a bean, bean property and also it’s method.

package com.mkyong.core;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component("customerBean")
public class Customer {

    @Value("#{addressBean}")
    private Address address;

    @Value("#{addressBean.country}")
    private String country;
    
    @Value("#{addressBean.getFullAddress('mkyong')}")
    private String fullAddress;

    //getter and setter methods
    
    @Override
    public String toString() {
        return "Customer [address=" + address + "\n, country=" + country
                + "\n, fullAddress=" + fullAddress + "]";
    }

}
package com.mkyong.core;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component("addressBean")
public class Address {

    @Value("Block ABC, LakeView")
    private String street;

    @Value("98700")
    private int postcode;

    @Value("US")
    private String country;

    public String getFullAddress(String prefix) {

        return prefix + " : " + street + " " + postcode + " " + country;
    }

    //getter and setter methods

    public void setCountry(String country) {
        this.country = country;
    }

    @Override
    public String toString() {
        return "Address [street=" + street + ", postcode=" + postcode
                + ", country=" + country + "]";
    }

}

连私有属性都可以直接访问

Run it

       Customer obj = (Customer) context.getBean("customerBean");
       System.out.println(obj);

Output

Customer [address=Address [street=Block ABC, LakeView, postcode=98700, country=US]
, country=US
, fullAddress=mkyong : Block ABC, LakeView 98700 US]

Spring EL in XML

See equivalent version in bean definition XML file.

<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-3.0.xsd">

    <bean id="customerBean" class="com.mkyong.core.Customer">
        <property name="address" value="#{addressBean}" />
        <property name="country" value="#{addressBean.country}" />
        <property name="fullAddress" value="#{addressBean.getFullAddress('mkyong')}" />
    </bean>

    <bean id="addressBean" class="com.mkyong.core.Address">
        <property name="street" value="Block ABC, LakeView" />
        <property name="postcode" value="98700" />
        <property name="country" value="US" />
    </bean>

</beans>

转载于:https://www.cnblogs.com/ghgyj/p/4749570.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值