spring框架学习笔记(四)

自动装配

通过id名字进行自动装配

新建测试用的两个bean类:ClassRoom、Teacher

代码如下:

Teacher类:

public class Teacher {
	private Integer teacherNo;
	private String name;
	/**
	 *
	 * @return the teacherNo
	 */
	public Integer getTeacherNo() {
		return teacherNo;
	}
	/**
	 * @param teacherNo the teacherNo to set
	 */
	public void setTeacherNo(Integer teacherNo) {
		this.teacherNo = teacherNo;
	}
	/**
	 *
	 * @return the name
	 */
	public String getName() {
		return name;
	}
	/**
	 * @param name the name to set
	 */
	public void setName(String name) {
		this.name = name;
	}
	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return "Teacher [teacherNo=" + teacherNo + ", name=" + name + "]";
	}

ClassRoom类:

public class ClassRoom {
	private String className;
	private String classNo;
	private Teacher teacher;
	/**
	 *
	 * @return the className
	 */
	public String getClassName() {
		return className;
	}
	/**
	 * @param className the className to set
	 */
	public void setClassName(String className) {
		this.className = className;
	}
	/**
	 *
	 * @return the classNo
	 */
	public String getClassNo() {
		return classNo;
	}
	/**
	 * @param classNo the classNo to set
	 */
	public void setClassNo(String classNo) {
		this.classNo = classNo;
	}
	/**
	 *
	 * @return the teacher
	 */
	public Teacher getTeacher() {
		return teacher;
	}
	/**
	 * @param teacher the teacher to set
	 */
	public void setTeacher(Teacher teacher) {
		this.teacher = teacher;
	}
	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return "Class [className=" + className + ", classNo=" + classNo
				+ ", teacher=" + teacher + "]";
	}

}

配置文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean id="teacher" class="com.pfSoft.autowire.beans.Teacher" p:teacherNo="89757" p:name="L林俊杰"></bean>
	<bean id="classRoomBean" class="com.pfSoft.autowire.beans.ClassRoom" p:classNo="302" p:className="三年二班" autowire="byName"></bean>
</beans>

 关键点在于,autowire选择的是byName。同时id为“teacher”的bean,与ClassRoom类中seeter风格的属性名具有相同的名字。因此实现了通过名字进行自动装配。

同样的autowire="byType"是表示可以通过类型来进行自动匹配,不过需要注意的是如果同类型有多个bean的话就会报不只一个的异常了。

时间: 2024-10-15 19:12:59

spring框架学习笔记(四)的相关文章

spring框架学习(四)自动装配

spring框架学习(四)自动装配 set注入和构造注入有时在做配置时比较麻烦.所以框架为了提高开发效率,提供自动装配功能,简化配置.Spring框架式默认不支持自动装配的,要想使用自动装配需要修改spring配置文件中<bean>标签的autowire属性 自动装配属性有6个值可选,分别代表不同的含义. 1,byName 从Spring环境中获取目标对象时,目标对象中的属性会根据名称在整个Spring环境中查找<bean>标签的id属性值.如果有相同的,那么获取这个对象,实现关联

spring框架学习笔记7:事务管理及案例

Spring提供了一套管理项目中的事务的机制 以前写过一篇简单的介绍事务的随笔:http://www.cnblogs.com/xuyiqing/p/8430214.html 还有一篇Hibernate的事务管理:http://www.cnblogs.com/xuyiqing/p/8449167.html 可以做个对比 Spring管理事务特有的属性: 事务传播行为:事务传播行为(propagation behavior)指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行. 例

spring框架学习笔记(二)

配置Bean Ioc容器 Ioc容器需要实例化以后才可以从Ioc容器里获取bean实例并使用. spring提供两种方式类型的Ioc容器实现: BeanFactory:底层的,面向spring框架的. ApplicationContext :面向开发人员的,一般用这个. 有两个实现类: ClassPathXmlApplicationContext:从类路径下加载配置文件. FileSystemXmlApplicationContext:从文件系统中加载配置文件. 两种方式配置文件是相同的. 通过

spring框架学习笔记(一)

仅为个人笔记,方便自己日后查看. eclipse安装spring插件的方法: http://jingyan.baidu.com/article/1612d5005fd087e20f1eee10.html 使用maven添加spring需要的jar包. 几个必须的jar包:core.bean.context.express.另外依赖一个日志包commons—logging pom.xml文件中为了统一版本,因此在properties写了版本号如下: <properties> <!-- sp

spring框架学习(四)AOP思想

导包 aop思想介绍 横向重复,纵向抽取 spring中的aop概念 spring实现aop的原理 1.动态代理(优先) 被代理对象必须要实现接口,才能产生代理对象.如果没有接口将不能使用动态代理技术 2.cglib代理(没有接口) 第三方代理技术,cglib代理.可以对任何类生成代理.代理的原理是对目标对象进行继承代理. 如果目标对象被final修饰.那么该类无法被cglib代理. aop名词学习

spring框架学习笔记4:SpringAOP实现原理

AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善.OOP引入封装.继承.多态等概念来建立一种对象层次结构,用于模拟公共行为的一个集合.不过OOP允许开发者定义纵向的关系,但并不适合定义横向的关系,例如日志功能.日志代码往往横向地散布在所有对象层次中,而与它对应的对象的核心功能毫无关系对于其他类型的代码,如安全性.异常处理和透明的持续性也都是如此,这种散布在各

Spring框架学习(四)SpringData

说是SpringData,其实其中包含了太多内容,同样开始看的一头雾水,其实现在还是有很多不了解的地方. 官方文档还是讲的不错的,一开始看会比较迷茫,但是稍微看一些以后,有些疑问在里面有说明.这是地址 这里都是基于SpringBoot的自动配置进行的,所以大部分配置比较简单. spring jdbc jdbc是java原有的数据访问组件,创建连接.创建查询.执行查询.结果通过ResultSet逐个读取转换. 当前面加上spring名头后,指的是spring的jdbc框架(或者叫模块?).通过sp

spring框架学习笔记(十)

通过注解的方式配置bean Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件. 即,想要实现注解的方式配置bean需要满足2个条件: 类上面标注特定组件,如:@Component.@Service.@Repository.@Controller 在配置文件中增加bean-scan:<context:component-scan base-package="com.pfSoft.annotation"></context:component

spring框架学习笔记(六)

bean的作用域 通过配置scope属性可以修改默认作用域如下: <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" scope="prototype"> 默认值是singleton,创建的是单例的bean实例,在Ioc容器初始化的时候bean对象已经构建成功.修改为prototpe则是为每一个bean创建一个新的实例. 使用外部属性文件 spring提供了一个PropertyP