表达式SpEL方式的属性注入

Posted siwuxie095

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了表达式SpEL方式的属性注入相关的知识,希望对你有一定的参考价值。

-----------------------siwuxie095

   

   

   

   

   

   

   

   

表达式 SpEL 方式的属性注入

   

   

表达式 SpEL 方式的属性注入是 Spring 3.x 版本后提供的方式

   

   

1、编写一个普通类

   

Book.java:

   

package com.siwuxie095.property;

   

public class Book {

 

private String bookName;

private int bookPrice;

 

public void setBookName(String bookName) {

this.bookName = bookName;

}

 

public String getBookName() {

return bookName;

}

 

public void setBookPrice(int bookPrice) {

this.bookPrice = bookPrice;

}

 

public int getBookPrice() {

return bookPrice;

}

 

}

   

   

   

2、编写另一个普通类

   

User.java:

   

package com.siwuxie095.property;

   

public class User {

 

private String userName;

private Book book;

 

public void setUserName(String userName) {

this.userName = userName;

}

 

public void setBook(Book book) {

this.book = book;

}

 

public void print() {

System.out.println("User"+userName+

"\nBook"+book.getBookName()+

"\nCost"+book.getBookPrice());

}

}

   

   

   

3、在配置文件中注入属性

   

applicationContext.xml:

   

<?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">

 

 

<!-- 表达式 SpEL 方式的属性注入 -->

 

<bean id="book" class="com.siwuxie095.property.Book">

<property name="bookName" value="#{‘十万个为什么‘}"></property>

<property name="bookPrice" value="#{100}"></property>

</bean>

 

<bean id="user" class="com.siwuxie095.property.User">

<property name="userName" value="#{‘小明‘}"></property>

<property name="book" value="#{book}"></property>

</bean>

 

   

</beans>

   

   

   

4、编写一个测试类

   

package com.siwuxie095.property;

   

import org.junit.Test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

   

public class TestProperty {

 

/**

* 手动加上 @Test 以进行单元测试(将自动导入 JUnit 4 jar 包)

*

* 选中方法名,右键->Run As->JUint Test

*/

@Test

public void testProperty() {

// (1) 加载 Spring 的核心配置文件

ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");

 

// (2) 得到核心配置文件中创建的对象(获取 Bean 实例)

User user=(User) context.getBean("user");

 

user.print();

}

}

   

   

   

   

   

   

   

   

   

【made by siwuxie095】

以上是关于表达式SpEL方式的属性注入的主要内容,如果未能解决你的问题,请参考以下文章

web安全Spel表达式注入漏洞

spel 表达式语言 注入

[Java-sec-code]SpEL表达式注入

Kotlin 编译器抱怨在属性定义中使用 SPeL 表达式。为啥?

一文详解SpEL表达式注入漏洞

Spring之@Value详解,利用SPEL注入List