Spring框架总结六---自动装配

文章目录

  • 自动装配
    • 一.自动装配概念
      • 1.手动装配
      • 2.自动装配
        • i.根据类型(byType)
        • ii.根据名称(byName)
    • 二.使用注解标识组件
      • 1.普通组件:@Component
      • 2.持久化层组件:@Repostitory
      • 3.业务逻辑层:Service
      • 4.表述层控制器组件:Controller

自动装配

一.自动装配概念

1.手动装配

以value或ref的方式明确指定属性值

	<bean id="teacher3" class="com.school.Teacher">
		<property name="tid" value="20150003">property>
		<property name="tname" value="Zhu Hanqin">property>
		<property name="students">
			<list>
				<ref bean="student2" />
				<ref bean="student3" />
				<ref bean="student4" />
			list>
		property>
	bean>

2.自动装配

根据指定的装配规则,不需要明确指定,Spring自动将匹配的属性值注入bean中。

i.根据类型(byType)

将类型匹配的bean作为属性注入到另一个bean中,若IOC容器中有多个与目标bean一致的bean,Spring将无法判定哪个bean最适合该属性,所以不能执行自动装配;

Student.java类

public class Student {
	private Integer sid;
	private String sname;
    private Integer age;
    private Double grade;
	private Teacher teacher;
	//...省略
}

xml配置文件:根据类型直接为对象属性赋值(对象属性对应的bean类型唯一)

	
	<bean id="s5" class="com.atguigu.spring.di.Student" autowire="byType">
	    <property name="sid" value="05052">property>
		<property name="sname" value="陈晨">property>
		<property name="age" value="22">property>
		<property name="grade" value="95">property>
		
		
	bean>
	<bean id="teacher" class="com.atguigu.spring.di.Teacher">
		<property name="tid" value="05060">property>
		<property name="tname" value="顾惜朝">property>
	bean>

获取该对象并输出结果

		Student s5=ac.getBean("s5",Student.class);
		System.out.println(s5);

在这里插入图片描述

ii.根据名称(byName)

Emp.java类

public class Emp {
	private Integer eid;

	private String ename;

	private CarExtends car;

	private DeptI dept;
	}

xml配置文件:必须将目标bean的名称和属性名设置成完全相同

	<bean id="emp" class="com.atguigu.ioc.auto.Emp" autowire="byName">
		<property name="eid" value="1001">property>
		<property name="ename" value="张三">property>
		
	bean>

	<bean id="car" class="com.atguigu.ioc.auto.Car">
		<property name="cid" value="666666">
		property>
		<property name="cname" value="车子">
		property>
	bean>
	
	<bean id="dept" class="com.atguigu.ioc.auto.Dept">
		<property name="did" value="666666">
		property>
		<property name="dname" value="部门">
		property>
	bean>

运行结果
在这里插入图片描述

二.使用注解标识组件

1.普通组件:@Component

2.持久化层组件:@Repostitory

3.业务逻辑层:Service

4.表述层控制器组件:Controller

你可能感兴趣的:(Spring框架)