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

自动装配

一.自动装配概念

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>
		<!-- 根据类型自动装配teacher对象属性:此时teacher类的bean必须唯一 -->
		<!-- <property name="teacher" value=""></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>
		<!-- <property name="car" ref="car"></property> 
		<property name="dept" ref="dept"></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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值