spring学习-3
spring的自动装配
spring IOC容器可以自动装配bean,只需要在bean的autowire属性指定自动装配的模式。
模式:
1、byType:根据类型自动装配。根据bean的类型和当前bean的属性的类型进行自动装配,若IOC容器中有1个以上的类型匹配的bean,则抛出异常;
2、byName:根据名称自动装配,byname根据bean的名字和当前bean的setter风格的属性名进行装配,也就是说bean的id和类中的set方法的名字相对应,如类中的set方法是setUser(),则其对应xml文件配置的bean的id=“user”,若id="user2",则自动装配失败,获取不到对应bean的值,所以我们常常把bean的id写成对应类名的首字母小写;
3、constructor: 通过构造器自动装配(不推荐使用)。
配置spring自动装配的xml文件
<bean id="car" class="com.test.autowire.Car"
p:name="ddd" p:price="20000"></bean>
<!-- 在自动装配使用byType时,同时有多个类型匹配的bean会抛出异常
<bean id="car2" class="com.test.autowire.Car"
p:name="dazhong" p:price="20000"></bean> -->
<bean id="address" class="com.test.autowire.Address" p:city="beijing"
p:no="23"></bean>
<!-- 在自动装配使用byName时,id没有对应的setter方法,则获取不到配置的bean值
<bean id="address1" class="com.test.autowire.Address"
p:city="beijing" p:no="23"></bean> -->
<!--为person bean添加自动装配 autowire="byType"或者autowire="byName" -->
<bean id="person" class="com.test.autowire.Person" p:name="fei"
autowire="byName"></bean>
运行效果
1、成功运行:
2、在自动装配使用byType时,同时有多个类型匹配的bean会抛出错误异常信息
3、**在自动装配使用byName时,id没有对应的setter方法,则获取不到配置的bean值 **
缺点:
1、在bean的配置文件设置autowire属性进行自动装配,会装配所有bean的属性,若希望只装配个别的属性就显得不够灵活;
2,、不能够同时装配byName 和byType所以在项目中很少使用自动装配,但是在整合框架的时候能够用到。
bean的继承和依赖关系
继承:被继承的bean叫做父bean,继承的叫做子bean。
1、子bean从父bean继承配置,包括属性配置,子bean也可以覆盖从父bean继承过来的配置;
2、父bean作为模板,设置abstract属性为true,这样就不能实例化这个bean,并不是所有的属性被继承,如abstract,autowire等不会被继承;
3、可以忽略父bean的class属性,让子bean指定自己的类,而共享相同的属性配置,此时abstract 必须为true.
配置spring继承和依赖的xml文件
<!-- 抽象bean:bean的abstract属性为true的bean,这样的bean不能被实例化,只能用来继承配置; 若某一个的bean的class属性没有指定,则该bean必须是一个抽象bean -->
<bean id="address" p:city="beijing" p:no="23" abstract="true"></bean>
<!-- bean配置的继承:使用bean的parent属性指定继承那个bean的配置 -->
<bean id="address2" class="com.test.autowire.Address" parent="address"
p:no="33"></bean>
<bean id="car" class="com.test.autowire.Car" p:name="ddd" p:price="20000"></bean>
<!--bean的依赖:depends-on属性,前置依赖的bean在本bean实例化之前创建好,若没有创建好则抛出异常 -->
<bean id="person" class="com.test.autowire.Person" p:name="qin"
p:address-ref="address2" depends-on="car"></bean>
运行效果
1、成功运行:
2、前置依赖的bean在本bean实例化之前没有创建好,抛出异常错误信息
spring学习-3的更多相关文章
- spring 学习之 bean 的注入方式 property和constructor-arg的使用方式
spring 学习之 bean 的注入方式 property和constructor-arg的使用方式. bean的注入方式: property 注入是: 通过setxx方法注入. construct ...
- Spring学习之AOP总结帖
AOP(面向方面编程),也可称为面向切面编程,是一种编程范式,提供从另一个角度来考虑程序结构从而完善面向对象编程(OOP). 在进行 OOP 开发时,都是基于对组件(比如类)进行开发,然后对组件进行组 ...
- Spring学习之第一个AOP程序
IOC和AOP是Spring的两大基石,AOP(面向方面编程),也可称为面向切面编程,是一种编程范式,提供从另一个角度来考虑程序结构从而完善面向对象编程(OOP). 在进行 OOP 开发时,都是基于对 ...
- MyEclipse Spring 学习总结三 SpringMVC
MyEclipse Spring 学习总结三 SpringMVC 一.SpringMVC原理 1.Springmvc 框架介绍 1)Spring 框架停工了构建Web应用程序的全功能MVC模块.Spr ...
- Spring学习 Ioc篇(一 )
一直以来忙于项目的开发,Spring虽然不用,一直想系统地学习一下,想看看它的源码,都没有时间,这段时间比较充裕,就索性先把Spring学习下,熟悉各个功能再去探究它内部的实现.就从Ioc篇开始学习. ...
- Spring学习(三)——Spring中的依赖注入的方式
[前面的话] Spring对我太重要了,做个关于web相关的项目都要使用Spring,每次去看Spring相关的知识,总是感觉一知半解,没有很好的系统去学习一下,现在抽点时间学习一下Spring.不知 ...
- Spring学习(二)——Spring中的AOP的初步理解[转]
[前面的话] Spring对我太重要了,做个关于web相关的项目都要使用Spring,每次去看Spring相关的知识,总是感觉一知半解,没有很好的系统去学习一下,现在抽点时间学习一下Spring. ...
- 【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展
<Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...
- Spring学习8-Spring事务管理
http://blog.sina.com.cn/s/blog_7ffb8dd501014e0f.html Spring学习8-Spring事务管理(注解式声明事务管理) 标签: spring注 ...
- Spring学习之Ioc控制反转(1)
开始之前: 1. 本博文为原创,转载请注明出处 2. 作者非计算机科班出身,如有错误,请多指正 ---------------------------------------------------- ...
随机推荐
- 两张Excel表比较,两个for循环比较优化使用Contains
将一个Excel表中的sheet中的一列导出到List<string>,用一个for循环循环另一张表中的数据,看是否在第一张表中的Contains中
- 内置函数(Day16)
现在python一共为我们提供了68个内置函数.它们就是python提供给你直接可以拿来使用的所有函数 内置函数 abs() divmod() input() open() stati ...
- Android:日常学习笔记(6)——探究活动(4)
Android:日常学习笔记(6)——探究活动(4) 活动的启动模式 standard模式 standard是活动默认的启动模式,在不进行显示定义的情况下,所有活动都会自动使用这种启动模式. stan ...
- 41和为S的连续正数序列
题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久,他 ...
- Loadrunder脚本篇——webservice接口测试(一)
函数介绍 soap_request 函数执行一个SOAP请求 函数原型 int soap_request( const char *StepName, ExpectedResponse, URL, , ...
- TIJ读书笔记03-初始化和构造器
TIJ读书笔记03-初始化和构造器 初始化和清理是涉及安全的两个问题,如果对象不能正确的初始化会引起很多错误,比如空指针异常等,如果不能恰当及时的清理,会占用过多资源. 构造器在创建一个类的实例的 ...
- Python编程-多道技术和进程
一.多道技术 1.多路复用 操作系统主要使用来 记录哪个程序使用什么资源 对资源请求进行分配 为不同的程序和用户调解互相冲突的资源请求. 我们可将上述操作系统的功能总结为: 处理来自多个程序发起的多个 ...
- Kubernetes Kubeadm部署集群
Kubernetes高可用架构 Kubenetes 2个高可用核心 apiserver.etcd etcd:集群数据中心,需要保持高可用,用于存放集群的配置信息.状态信息及Pod等信息.如果数据丢失集 ...
- poj 1961 Period 【KMP-next前缀数组的应用】
题目地址:http://poj.org/problem?id=1961 Sample Input 3 aaa 12 aabaabaabaab 0 Sample Output Test case #1 ...
- SpringCloud-高可用的分布式配置中心(config)
当服务实例很多时,都从配置中心读取文件,这是可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用 新建一个注册中心 pom如下 <?xml version="1.0" ...