Spring DI
DI指的是bean之间的依赖注入,设置对象之间的级联关系。
⭐Classes
package com.oyrf.entity;
import lombok.Data;
import java.util.List;
@Data
public class Classes {
private Integer id;
private String name;
private List<Student> students;
}
⭐Student
package com.oyrf.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
private Integer id;
private String name;
private Integer age;
private Classes classes;
public Student(Integer id, String name) {
this.id = id;
this.name = name;
}
}
⭐spring_di.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">
<!-- Classes -->
<bean id="classes" class="com.oyrf.entity.Classes">
<property name="id" value="1"></property>
<property name="name" value="一班"></property>
<property name="students">
<list>
<ref bean="student"></ref>
<ref bean="student2"></ref>
</list>
</property>
</bean>
<!-- Student-->
<bean id="student" class="com.oyrf.entity.Student">
<property name="id" value="100"></property>
<property name="name" value="张三"></property>
<property name="age" value="22"></property>
</bean>
<bean id="student2" class="com.oyrf.entity.Student">
<property name="id" value="200"></property>
<property name="name" value="李四"></property>
<property name="age" value="21"></property>
</bean>
</beans>
- 注意:bean之间的级联需要使用ref属性完成映射,而不能直接使用value,否则会抛出类型转换异常。
Caused by: org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'java.lang.String' to required type 'com.oyrf.entity.Classes' for property 'classes'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'com.oyrf.entity.Classes' for property 'classes': no matching editors or conversion strategy found
个人博客:https://oybox.github.io/