普通类进行自动装配
创建两个bean:
public class Teacher {
private Integer tid;
private String tname;
public Teacher() {
}
public Teacher(Integer tid, String tname) {
this.tid = tid;
this.tname = tname;
}
public void setTid(Integer tid) {
this.tid = tid;
}
public void setTname(String tname) {
this.tname = tname;
}
@Override
public String toString() {
return "Teacher{" +
"id=" + tid +
", name='" + tname + '\'' +
'}';
}
}
public class Student {
private Integer sid;
private String sname;
private Teacher stea;
public Student(){
}
public void setSid(Integer sid) {
this.sid = sid;
}
public void setSname(String sname) {
this.sname = sname;
}
public void setStea(Teacher stea) {
this.stea = stea;
}
@Override
public String toString() {
return "Student{" +
"sid=" + sid +
", sname='" + sname + '\'' +
", stea=" + stea +
'}';
}
}
在resources目录下创建spring.spring_student.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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="stea" class="com.mine.bean.Teacher">
<property name="tid"><value type="java.lang.Integer">202</value></property>
<property name="tname"><value type="java.lang.String">teaTwo</value></property>
</bean>
<!-- autowire 设置 byName,bean对象中的属性名与另一个bean对象的name或id一致进行注入 -->
<!-- autowire 设置 byType,bean对象中的属性类型与另一个bean对象的class类型一致进行注入 -->
<bean id="student" class="com.mine.bean.Student" lazy-init="true" autowire="byName">
<property name="sid">
<value type="java.lang.Integer">105</value>
</property>
<property name="sname">
<value type="java.lang.String">fff</value>
</property>
</bean>
</beans>
public class MyMain {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/spring_student.xml");
Student student = (Student) context.getBean("student");
System.out.println(student);
}
}
结果:
Student{sid=105, sname='fff', stea=Teacher{id=202, name='teaTwo'}}
Process finished with exit code 0
接口进行自动装配
创建接口:
public interface TestInterface {
}
创建实现类:
public class TestInterfaceImpl implements TestInterface {
@Override
public String toString() {
return "TestInterfaceImpl{}";
}
}
创建bean:
public class Student {
private TestInterface testInterface;
public Student() {
}
public Student(TestInterface testInterface) {
this.testInterface = testInterface;
}
public void setTestInterface(TestInterface testInterface) {
this.testInterface = testInterface;
}
@Override
public String toString() {
return "Student{" +
"testInterface=" + testInterface +
'}';
}
}
在resources目录下创建spring.spring_student.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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="testInterface" class="com.mine.inter.TestInterfaceImpl"></bean>
<!-- autowire 设置 byName,按照名字进行找寻 找不到就没有 找到就装配 -->
<!-- autowire 设置 byType,如果有两个以上对应的类型 标签配置时直接报错 采用内部形式 ref自己指定的形式 -->
<bean id="student" class="com.mine.bean.Student" lazy-init="true" autowire="byName"></bean>
</beans>
public class MyMain {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/spring_student.xml");
Student student = (Student) context.getBean("student");
System.out.println(student);
}
}
结果:
Student{testInterface=TestInterfaceImpl{}}
Process finished with exit code 0