Bean不同配置方式比较
| 基于XML配置 | 基于注解配置 | 基于Java类配置 | |
| Bean定义 | 在XML文件中通过<bean>元素定义Bean,如:<bean class="com.bbt.UserDao"/> | 在Bean实现类处通过标注@Component或衍型类@Repository、@Service及@Controller定义Bean | 在标注了@Configuration的Java类中,通过在类方法上标注@Bean定义一个Bean。方法必须提供Bean的实例化逻辑 | 
| Bean名称 | 通过<bean>的id或name属性定义,如:<bean id="userDao" class="com.bbt.UserDao"/> 默认名称为:com.bbt.userDao#0 | 通过注解的value属性定义,如@Component("userDao")。默认名称为小写字母打头的类名(不带包名):userDao | 通过@Bean的name属性定义,如@Bean("userDao"),默认名称为方法名 | 
| Bean注入 | 通过<property>子元素或通过p命名空间的动态属性,如p:userDao-ref="userDao"进行注入 | 通过在成员变量或方法入参处标注@Autowired,按类型匹配自动注入。还可以配合使用@Qualifier按名称匹配方式注入 | 比较灵活,可以通过在方法处通过@Autowired方法入参绑定Bean,然后在方法中通过代码进行注入,还可以通过调用配置类的@Bean方法进行注入 | 
| Bean生命过程方法 | 通过<bean>的init-method和destory-method属性指定Bean实现类的方法名。最多只能指定一个初始化方法和一个销毁方法。 | 通过在目标方法上标注@PostConstruct和@PreDestroy注解指定初始化或销毁方法,可以定义任意多个方法 | 通过@Bean的initMethod或destoryMethod指定一个初始化或销毁方法。 对于初始化方法来说,你可以直接在方法内部通过代码的方式灵活定义初始化逻辑 | 
| Bean作用范围 | 通过<bean>的scope属性指定,如:<bean class="com.bbt.UserDao" scope="prototype"/> | 通过在类定义处标注@Scope指定,如@Scope("prototype") | 通过在Bean方法定义处标注@Scope指定 | 
| Bean延迟初始化 | 通过<bean>的lazy-init属性指定,默认为default,继承于<beans>的default-lazy-init设置,该值默认为false | 通过在类定义处标注@Lazy指定,如@Lazy(true) | 通过在Bean方法定义处标注@Lazy指定 | 
| 基于XML配置 | 基于注解配置 | 基于Java类配置 | |
| 适合场景 | 1)Bean实现类来源于第三方类库,如DataSource,JdbcTemplate等,因无法在类中标注注解,通过XML配置方式较好; 2)命名空间的配置,如aop、context等,只能采用基于XML的配置 | Bean的实现类是当前项目开发的,可以直接在Java类中使用基于注解的配置 | 基于Java类配置的优势在于可以通过代码方式控制Bean初始化的整体逻辑。所以如果实例化Bean的逻辑比较复杂,则比较适合用基于Java类配置的方式 | 
Bean不同配置方式比较的更多相关文章
- 【Spring3.0系列】---Bean不同配置方式比较 和适用场合
		Bean不同配置方式比较1.基于XML配置定义:在XML文件中通过<bean>元素定义Bean,例如<bean class="com.bbt.UserDao"/& ... 
- Spring框架(2)---IOC装配Bean(xml配置方式)
		IOC装配Bean (1)Spring框架Bean实例化的方式提供了三种方式实例化Bean 构造方法实例化(默认无参数,用的最多) 静态工厂实例化 实例工厂实例化 下面先写这三种方法的applicat ... 
- Spring之Bean的配置方式
		在博客中为了演示容器Bean实例化时暴露出的几个接口,将UserBean配置在XML中,其实常见的Bean的配置有3种.1.基于xml配置Bean 2.使用注解定义Bean 3.基于java类提供Be ... 
- springmvc学习指南 之---第25篇 Spring Bean有三种配置方式
		writed by不要张艳涛, 从tomcat转到了springmvc 现在开始有点不知道该看什么书了,看完了springmvc 学习指南之后 又查了一些书,好多都是内容相近,在找书的过程之中,发现s ... 
- Bean不同配置方式的比较
		在<Spring3.x 企业应用开发实战>上学习了Bean的三种不同配置方法,下图是我从书中截取的图片,比较了一下这三种配置的异同 ps:发现图片不能完全显示(右侧有一块不显示),解决方法 ... 
- 【转】Spring 中三种Bean配置方式比较
		今天被问到Spring中Bean的配置方式,很尴尬,只想到了基于XML的配置方式,其他的一时想不起来了,看来Spring的内容还没有完全梳理清楚,见到一篇不错的文章,就先转过来了. 以前Java框架基 ... 
- Spring 中三种Bean配置方式比较
		今天被问到Spring中Bean的配置方式,很尴尬,只想到了基于XML的配置方式,其他的一时想不起来了,看来Spring的内容还没有完全梳理清楚,见到一篇不错的文章,就先转过来了. 以前Java框架基 ... 
- Spring中的Bean配置方式
		1.IOC和DI概述 IOC(Inversion of Control):其思想是反转资源获取的方向. 传统的资源查找方式要求组件向容器发起请求查找资源. 作为回应, 容器适时的返回资源. 而应用了 ... 
- spring Bean的三种配置方式
		Spring Bean有三种配置方式: 传统的XML配置方式 基于注解的配置 基于类的Java Config 添加spring的maven repository <dependency> ... 
随机推荐
- 拥抱ARM妹纸第二季 之 第三次 给我变个月亮,让约会更浪漫!
			嗯嗯,效果不错.趁着这个热乎劲,接到俺的LED测试板上试试.呃~~~ 竟然和小LED的效果不一样啊,不一样.不但闪烁而且完全没有调光效果.郁闷内,查查原因呗.看看那里出问题.迅速在PT4115手册里翻 ... 
- static方法不能直接访问类内的非static变量和不能调用this,super语句分析
			大家都知道在static方法中,不能访问类内非static成员变量和方法.可是原因是什么呢? 这首先要从static方法的特性说起.static方法,即类的静态成员经常被称为"成员变量&qu ... 
- python 笔记总结
			python 3.5 面向对象:类:具有同种属性的对象称为类,是个抽象的概念.比如说:汽车.人.狗.神:对象:日常生活中的所有东西都是对象,是类的实例化.比如说:推土车是汽车的实例化:姚明是人的实例 ... 
- Liferay SDK 6.2与7.0中build.[$username].properties 文件的配置
			这篇文章是针对刚开始开发Liferay的新手写的,希望能够帮到刚入门的开发者减少一些配置上的麻烦. 前提: 1. 下载了Liferay IDE(Liferay的官方开发工具) 2.下载了Liferay ... 
- 在ubuntu16.04 下安装haproxy 1.5.11 做tcp负载均衡
			由于haproxy需要FQ下载,所以从csdn下载了较为新版的haproxy1.5.11,安装过程如下: 1. 解压haproxy-1.5.11.tar.gz : tar xzvf haproxy-1 ... 
- windows最基本命令行
			7:计算机运行命令全集 winver---------检查Windows版本 wmimgmt.msc----打开windows管理体系结构 wupdmgr--------windows更新程序 win ... 
- 1068: [SCOI2007]压缩 - BZOJ
			Description 给一个由小写字母组成的字符串,我们可以用一种简单的方法来压缩其中的重复信息.压缩后的字符串除了小写字母外还可以(但不必)包含大写字母R与M,其中M标记重复串的开始,R重复从上一 ... 
- 3142:[HNOI2013]数列 - BZOJ
			题目描述 Description 小T最近在学着买股票,他得到内部消息:F公司的股票将会疯涨. 股票每天的价格已知是正整数,并且由于客观上的原因,最多只能为N.在疯涨的K天中小T观察到:除第一天外每天 ... 
- C#文件对话框,一次多选文件设置
			OpenFileDialog ofd = new OpenFileDialog();ofd.Multiselect = true;if (ofd.ShowDialog() == DialogResul ... 
- uva 10910
			简单dp /************************************************************************* > Author: xlc2845 ... 
