SpEl
-
创建简单java类
package com.atguigu.bean; public class Car { private String carName; public String getCarName() { return carName; } public void setCarName(String carName) { this.carName = carName; } public Car(String carName) { super(); this.carName = carName; } public Car() { super(); } @Override public String toString() { return "Car [carName=" + carName + "]"; } }
package com.atguigu.bean; public class Person { private String lastName; private Integer age; private String gender; private String email; private Car car; public Person(Car car02) { super(); this.car = car02; } public void myInit(){ System.out.println("Person对象被初始化了"); } public void myDestory(){ System.out.println("Person对象被销毁了"); } public Person() { super(); System.out.println("Person对象被创建了"); } public Person(String lastName, Integer age, String gender, String email) { super(); this.lastName = lastName; this.age = age; this.gender = gender; this.email = email; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Car getCar() { return car; } public void setCar(Car car) { this.car = car; } @Override public String toString() { return "Person [lastName=" + lastName + ", age=" + age + ", gender=" + gender + ", email=" + email + ", car=" + car + "]"; } }
-
编写配置文件,使用SpEL
<?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="car" class="com.atguigu.bean.Car"> <property name="carName" value="宝马"></property> </bean> <!-- SpEL(spring expression language)spring表达式语言 在SpEL中使用字面量 引用其他bin 引用其他bean的某个属性 调用非静态方法 调用静态方法 使用运算符 --> <bean id="person01" class="com.atguigu.bean.Person"> <!-- 使用运算符 --> <property name="age" value="#{12*5}"></property> <!-- 取出其他bean的属性值 --> <property name="lastName" value="#{car.carName}"></property> <!-- 引用其他bin --> <property name="car" value="#{car}"></property> <!-- 调用静态方法 假设email是用uuid生成的 UUID.randomUUID().toString(); 需要满足规则:(T(全类名).静态方法(参数)) --> <property name="email" value="#{T(java.util.UUID).randomUUID().toString().substring(0,5)}"></property> <!-- 调用非静态方法; 对象.方法名 --> <property name="gender" value="#{car.getCarName()}"></property> </bean> </beans>
-
测试
package com.atguigu.test; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class SpEl { @Test public void test(){ ApplicationContext con = new ClassPathXmlApplicationContext("bean_spel.xml"); Object bean = con.getBean("person01"); System.out.println(bean); //Person对象被创建了 //Person [lastName=宝马, age=60, gender=宝马, email=8c55b, car=Car [carName=宝马]] } }