创建类:
package entity; import java.util.Date; public class WifeFactory { public Wife createChild(){ Child child = new Child(); child.setName("儿子"); return child; } public static Date getDate(){ return new Date(); } }
Person类:
package entity; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Objects; public class Person implements InitializingBean, DisposableBean { private Integer id; private String name; private String gender; private Date birth; private List<String> ls; private Map<Integer,String> course; private Wife wife; public Person(Wife wife2) { this.wife = wife2; } public Person() { } public Person(Integer id, String name, String gender, Date birth, List<String> ls, Map<Integer, String> course, Wife wife) { this.id = id; this.name = name; this.gender = gender; this.birth = birth; this.ls = ls; this.course = course; this.wife = wife; } @Override public String toString() { return "Person{" + "id=" + id + ", name='" + name + '\'' + ", gender='" + gender + '\'' + ", birth=" + birth + ", ls=" + ls + ", course=" + course + ", wife=" + wife + '}'; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; return Objects.equals(id, person.id) && Objects.equals(name, person.name) && Objects.equals(gender, person.gender) && Objects.equals(birth, person.birth) && Objects.equals(ls, person.ls) && Objects.equals(course, person.course) && Objects.equals(wife, person.wife); } @Override public int hashCode() { return Objects.hash(id, name, gender, birth, ls, course, wife); } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public Date getBirth() { return birth; } public void setBirth(Date birth) { this.birth = birth; } public List<String> getLs() { return ls; } public void setLs(List<String> ls) { this.ls = ls; } public Map<Integer, String> getCourse() { return course; } public void setCourse(Map<Integer, String> course) { this.course = course; } public Wife getWife() { return wife; } public void setWife(Wife wife) { this.wife = wife; } }
Wife类:
package entity; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Objects; public class Wife { private Integer id; private String name; private String gender; private Date birth; private List<String> ls; private Map<Integer,String> course; /** * 静态工厂方法 * @return */ public static Wife createChild(){ Child child = new Child(); child.setName("儿子"); return child; } public Wife() { System.out.println("Wife加载"); } @Override public String toString() { return "Wife{" + "id=" + id + ", name='" + name + '\'' + ", gender='" + gender + '\'' + ", birth=" + birth + ", ls=" + ls + ", course=" + course + '}'; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Wife wife = (Wife) o; return Objects.equals(id, wife.id) && Objects.equals(name, wife.name) && Objects.equals(gender, wife.gender) && Objects.equals(birth, wife.birth) && Objects.equals(ls, wife.ls) && Objects.equals(course, wife.course); } @Override public int hashCode() { return Objects.hash(id, name, gender, birth, ls, course); } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public Date getBirth() { return birth; } public void setBirth(Date birth) { this.birth = birth; } public List<String> getLs() { return ls; } public void setLs(List<String> ls) { this.ls = ls; } public Map<Integer, String> getCourse() { return course; } public void setCourse(Map<Integer, String> course) { this.course = course; } }
xml中添加配置:
<bean class="entity.Person" id="person"> <!--运算表达式--> <property name="id" value="#{1+2}"></property> <!--引用其它的Bean--> <property name="wife" value="#{wife}"></property> <!--将引用的Bean的属性赋值到本Bean中--> <property name="name" value="#{wife.name}"></property> <!--调用引用Bean的方法--> <property name="gender" value="#{wife.getName()}"></property> <!--调用静态方法--> <property name="birth" value="#{T(entity.WifeFactory).getDate()}"></property> </bean> <bean class="entity.Wife" id="wife"> <property name="name" value="长老王五"></property> </bean>
测试方法:
/** * SpEL表达式 */ @Test public void fun8(){ Person person = ioc.getBean("person", Person.class); System.out.println(person); }
运行结果:
1 | Person{id= 3 , name= '长老王五' , gender= '长老王五' , birth=Sat May 28 20 : 23 : 51 CST 2022 , ls= null , course= null , wife=Wife{id= null , name= '长老王五' , gender= 'null' , birth= null , ls= null , course= null }}是 |
所有的结果都与配置中赋值的一样。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)