spring心得6--自动装配知识点讲解及案例分析

1.自动装配

   spring3.2以上版本有四种自动装配类型:

    1).byName:寻找和属性名相同的bean,若找不到,则装不上。

    2).byType:寻找和属性类型相同的bean,找不到,装不上,找到多个抛异常。

    3).constructor:按照参数的类型装配;找不到,装不上;在有与bean实例类中属性相同的id时,即使存在同一个类型的多个bean也不会抛异常,否则反之找到多个就会抛异常。

   4)no:不使用自动装配

   自动装配主要通过bean标签的autowire属性配置相应的自动装配方式使用byType和constructor自动装配时,若找到多个符合条件的bean,会报异常,因此最好的方式是不用自动组装

2.自动装配案例剖析

   下面主要列出相关的spring配置文件和主要的bean,用来测试的测试类和辅助就不再赘述了;

主要的bean实例
package www.csdn.spring.autowire;public class EmpBean {private String name;private DeptBean deptBean;private CompBean compBean;public void setName(String name) {this.name = name;}/** public void setDeptBean(DeptBean deptBean) { this.deptBean = deptBean; }* public void setCompBean(CompBean compBean) { this.compBean = compBean; }*/@Overridepublic String toString() {return "EmpBean [name=" + name + ", deptBean=" + deptBean+ ", compBean=" + compBean + "]";}public EmpBean(DeptBean deptBean, CompBean compBean) {super();this.deptBean = deptBean;this.compBean = compBean;}}按byName自动装配的配置文件
<?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="compBean" class="www.csdn.spring.autowire.CompBean"><property name="name" value="DELL"/></bean><bean id="deptBean" class="www.csdn.spring.autowire.DeptBean"><property name="name" value="销售部门"/></bean><!-- 使用autoWrie自动装配,改属性值byName;能让其自动装配的前提是bean实例中的属性值名称与配置文件中引入的类型id一致--><bean id="empBean" class="www.csdn.spring.autowire.EmpBean" autowire="byName"><property name="name" value="杨凯"/>
<!--           <property name="comp" ref="compBean"/><property name="dept" ref="deptBean"/> --></bean>
</beans>
按byType自动装配的配置文件
<?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="compBean" class="www.csdn.spring.autowire.CompBean"><property name="name" value="DELL"/></bean><bean id="deptBean" class="www.csdn.spring.autowire.DeptBean"><property name="name" value="销售部门"/></bean><!-- 这里只能出现一个deotBean,id名不一样但是类型一样,都是deptBean实体的;id="deptBean"或同类型的不同id都会抛异常<bean id="deptBean1" class="www.csdn.spring.autowire.DeptBean"><property name="name" value="销售部门"/></bean> --><!-- 使用autoWrie自动装配,改属性值byType;按类型自动装配,前提是同一个类型的只能有一个--><bean id="empBean" class="www.csdn.spring.autowire.EmpBean" autowire="byType"><property name="name" value="杨凯"/>
<!--           <property name="comp" ref="compBean"/><property name="dept" ref="deptBean"/> --></bean>
</beans>按constructor自动装配的配置文件
<?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="compBean" class="www.csdn.spring.autowire.CompBean"><property name="name" value="DELL"/></bean><!-- 在spring3.2以上版本中:使用构造器自动装配时,如果有一个id与bean实例中的属性名相同的配置bean存在,虽然构造器自动装配是按类型自动装配的,但是即使有多个相同类型的bean存在也不受影响;受影响的情况是:没有与bean实例中的属性名相同的配置bean存在,又有多个相同类型的bean配置,就会抛异常--><bean id="deptBean" class="www.csdn.spring.autowire.DeptBean"><property name="name" value="销售部门"/></bean><bean id="deptBean1" class="www.csdn.spring.autowire.DeptBean"><property name="name" value="销售部门"/></bean><bean id="deptBean2" class="www.csdn.spring.autowire.DeptBean"><property name="name" value="销售部门"/></bean> <!-- 使用autoWrie自动装配,改属性值constructor;构造器自动装配就是按类型自动装配beam实例中必须结合构造器使用,如果没有构造器自动装配后注入不进去值,取出为空值--><bean id="empBean" class="www.csdn.spring.autowire.EmpBean" autowire="constructor"><property name="name" value="杨凯"/>
<!--           <property name="comp" ref="compBean"/><property name="dept" ref="deptBean"/> --></bean>
</beans>

转载于:https://www.cnblogs.com/yangkai-cn/archive/2013/05/05/4017305.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461120.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中断的上下半部

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 前言 因为输入类设备的输入都是异步事件&#xff0c;因此一般使用中断来处理和响应。 中断处理程序处于中断上下文中&#xff0c;不能和用户空间数据交互&#xff08;不能使用copy_to(from)_usr函数…

arrayPointer

1,分别使用指针加减 int wages[2] {100000000,20000000}; int *pw wages or int *pw &wages[0] 表示指针指向数组的首地址; pw表示地址,*pw表示取值,new分配的动态数组时 指针名称当数组名称使用eg pw[0],pw[2]分别表示指向数组wages的2个数组的元素值; 我们已知pw表示此…

php抓取动态数据,php+ajax实现无刷新动态加载数据技术

我们浏览有些网页的时候&#xff0c;当拉动浏览器的滚动条时到页底时&#xff0c;页面会继续自动加载更多内容供用户浏览。这种技术我暂且称它为滚屏加载技术。我们发现很多网站用到这种技术&#xff0c;必应图片搜索、新浪微博、QQ空间等将该技术应用得淋漓尽致。滚屏加载技术…

图片播放器小项目(详解)

以下内容源于朱有鹏《物联网大讲堂》课程的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。一、开始动手写代码 1、Makefile介绍 &#xff08;1&#xff09;这是一个通用的项目管理的Makefile体系&#xff0c;自己写的&#xff08;有子文件夹组织的&#xff09;项目可以…

基于linux-2.6.32.2的servfox移植

说明&#xff1a;这篇文章是本人在做基于web客户端的远程监控系统课题期间&#xff0c;在移植servfox应用服务程序费了很大周折&#xff0c;所以写下的。 只是介绍了基于arm的servfox移植【因为其他部分的移植没有遇到过错误】 前言&#xff1a; 如何移植基于linux的USB摄像头驱…

Telnet远程访问思科交换机、路由器

一、实验目的Telnet远程访问思科交换机、路由器二、实验拓扑三、实验步骤1、PC1远程管理S11&#xff09;配置交换机的管理IPS1(config)#int vlan 1S1(config-if)#ip add 192.168.1.100 255.255.255.0S1(config-if)#no shu2&#xff09;开启S1的telnet远程管理服务S1(config)#li…

php redis 队列,Redis 实现队列

## Redis 实现队列Redis 实现队列场景说明&#xff1a;用于处理比较耗时的请求&#xff0c;例如批量发送邮件&#xff0c;如果直接在网页触发执行发送&#xff0c;程序会出现超时高并发场景&#xff0c;当某个时刻请求瞬间增加时&#xff0c;可以把请求写入到队列&#xff0c;后…

offsetTop测试见解

offsetTop一开始以为只要容器内div的top定位为负就行&#xff0c;结果今天刚做了个demo&#xff0c;发现好像不是那么回事&#xff0c;于是经过各种测试&#xff0c;得出了一些结论&#xff0c;结论看demo <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" &qu…

[置顶]       cocos2d-x 手游源码站

尊重开发者的劳动成果&#xff0c;转载的时候请务必注明出处&#xff1a;http://blog.csdn.net/haomengzhu/article/details/37829061 1、魔幻方块 链接&#xff1a;魔幻方块源码关键词&#xff1a;魔幻方块源码 源代码 Cocos2d-x2.0 游戏源码 益智 休闲 游戏 游戏类型&#xf…

include “ “ 与 include < > 的区别

#include <>格式&#xff1a;引用标准库头文件&#xff0c;编译器从标准库目录开始搜索。 #incluce " "格式&#xff1a;引用非标准库的头文件&#xff0c;编译器从用户的工作目录开始搜索&#xff0c;如果找不到&#xff0c;再到标准位置寻找。 预处理器发现…

php 字符串的比较大小,php怎么比较两个字符串的大小

比较字符串是任何编程语言的字符串处理功能中重要的特性之一。在PHP中除了可以使用比较运算符号(、)加以比较外&#xff0c;还提供了一系列的比较函数&#xff0c;使PHP可以进行更复杂的字符串比较。如strcmp()、strcasecmp()和strnatcmp()等函数。1、按字节顺序进行字符串比较…

Android SDK开发包国内下载地址

原帖地址&#xff1a;http://www.cnblogs.com/bjzhanghao/archive/2012/11/14/2769409.html 不知道是因为最近kaihui还是怎么的&#xff0c;打开android sdk官方网站特别的慢&#xff0c;想下载最新版本的platform几乎变成不可能完成的任务&#xff0c;不知道为什么Google不像…

SharePoint 2013 Workflow - Advanced Workflow Debugging with Fiddler

来自&#xff1a;Andrew Connell [MVP SharePoint] | 时间&#xff1a;2012-07-18 19:26:30 原文链接&#xff1a; http://www.andrewconnell.com/blog/archive/2012/07/18/sharepoint-2013-workflow-advanced-workflow-debugging-with-fiddler.aspx In previous posts Iv…

调试技巧——宏定义开关和printf

转自http://blog.csdn.net/guanyasu/article/details/51866984 #ifndef __CONFIG_H__ #define __CONFIG_H__#define DEBUG/*#undef DEBUG */#ifdef DEBUG #define debug(...) \{\fprintf(stderr,"[DEBUG] [%s:%s:%d]",__FILE__,__FUNCTION__,__LINE__);\fprin…

java sheet 打印区域设定,如何使用Java设置电子表格的打印区域。(How to set the print area of a spreadsheet using Java.)...

如何使用Java设置电子表格的打印区域。(How to set the print area of a spreadsheet using Java.)问题描述 (Problem Description)如何使用Java设置电子表格的打印区域。解决方案 (Solution)以下是使用Java设置电子表格打印区域的程序。import java.io.File;import java.io.Fi…

RedHat6.2 x86手动配置LNMP环境

为什么80%的码农都做不了架构师&#xff1f;>>> 因为公司要求用RedHat配&#xff0c;顺便让我练习一下Linux里面的操作什么的。 折腾来折腾去终于搞好了&#xff0c;其实也没那么难嘛。但是也要记录一下。 首先&#xff0c;是在服务器里面用VMware搭建的RedHat6.2 …

Java中装箱与拆箱

JDK5.0 之后提供了一种新特性&#xff1a;自动装箱拆箱。 既然是装拆箱&#xff0c;那么我们先来看看这个所谓的“箱”&#xff1a; java中的8种基本数据类型都有与之对应的封装类&#xff08;封装类就是所谓的箱&#xff09;。分别是&#xff1a;byte short int long double f…

《c语言深度剖析》读书笔记

一、注意点 1、 2、 3、 4、 5、 6、 7、 8、 9、 10、 11、 二、问题 1、 2、 3、 4、 5、 6、 7、

位操作的细节

一、位操作符 &#xff08;1&#xff09;位与& 位与符号是一个&&#xff0c;两个&&是逻辑与。位与时两个操作数是按照二进制位彼次对应位相与的&#xff0c;逻辑与是两个操作数作为整体来相与的。&#xff08;举例&#xff1a;0xAA&0xF00xA0, 0xAA &&…

Android支付接入(五):机锋网

前边已经陆续跟大家走了一遍运营商和支付宝付费接入&#xff0c;今天跟大家一起看看机锋网的支付接入。事实上付费接入本身并没有太多须要注意的地方&#xff0c;做的多了以后你会发现套路都是大同小异的。而须要注意的地方在于怎么跟游戏兼容及后期的维护&#xff0c;包含增减…