Bean的不同配置方式比较与应用场景
基于XML配置
Bean的定义: 在XML文件中通过<bean>元素定义。
Bean的名称: 通过<bean>的id或name属性定义。
Bean的注入: 通过<property>子元素或通过p命名空间的动态属性。
Bean生命过程方法:通过<bean>的init-method和destory-method属性指定Bean实现类的方法名。最多只能指定一个初始化方法和一个销毁方法。
Bean作用范围: 通过<bean>的scope属性指定。
Bean延迟初始化: 通过<bean>的lazy-init属性指定,默认为default,继承于<beans>的default-lazy-init设置,该值默认为false。
应用场景:
1、Bean实现类来源于第三方类库,如 DataSoure、JdbcTemplate等,因无法在类中标注注解,所以通过XML配置方式比较好。
2、命名空间的配置,如aop、context等,只能采用基于XML的配置。
基于注解配置
Bean的定义: 在Bean实现类处通过标注@Compoent或衍型类(@Repository、@Service、@Controller)定义Bean。
Bean的名称: 通过注解的value属性定义,如@Component("name")。默认名称为小写字母开头的类名(不带包名)name。
Bean的注入: 通过通过在成员变更或方法入参处标注@Autowired,按类型匹配自动注入。还可以配合使用@Qualifier按名称匹配方式注入。
Bean生命过程方法:通过在目标方法上标注@PostConstruct 和@PreDestroy注解指定初始化或销毁方法,可以定义任意多个。
Bean作用范围: 通过在类定义处标注@Scope指定,如@Scope("prototype")
Bean延迟初始化: 通过在类定义处标注@Lazy指定,如@Lazy(true)。
应用场景:
1、Bean的实现类是当前项目开发的,可以直接在Java类中使用基于注解的配置。
基于Java类配置
Bean的定义: 在标注了@Configuration的Java类中,通过在类方法上标注@Bean定义一个Bean。方法必须提供Bean的实例化逻辑。
Bean的名称: 通过@Bean的name属性定义,如@Bean("user")。默认名称为方法名。
Bean的注入: 比较灵活,可以在方法处通过@Autowired使方法入参绑定Bean,然后在方法中通过代码进行注入;还可以通过调用配置类@Bean方法进行注入。
Bean生命过程方法:通过@Bean的initMethod或destoryMethod指定一个初始化或销毁方法。对于初始化方法来说,可以直接在方法内通过代码的方法灵活定义初始化逻辑。
Bean作用范围: 通过在Bean方法定义处标注@Scope指定。
Bean延迟初始化: 通过在Bean方法定义处标注@Lazy指定。
应用场景:
1、基于JAVA类配置的优势在于可以通过代码方法控制Bean初始化的整体逻辑。如果实例化Bean的逻辑比较复杂,则比较适合基于Java类配置的方式。
基于Groovy DSL配置
Bean的定义: 在Groovy文件中通过DSL定义Bean。
Bean的名称: 通过Groovy的DSL定义Bean的名称(Bean的类型,Bean构建函数参数)。
Bean的注入: 比较灵活,可以在方法处通过ref()方法进行注入,如:ref("logDao")。
Bean生命过程方法:通过bean->bean.initMethod或bean.destoryMethod指定一个初始化或销毁方法。
Bean作用范围: 通过bean->bean.scope="prototype"指定。
Bean延迟初始化: 通过bean->bean.lazyInit=true指定。
应用场景:
1、基于Groovy DSL配置的优势在于可以通过Groovy脚本灵活控制Bean初始化的过程。如果实例化Bean的逻辑比较复杂,则比较适合基于Groovy DSL配置的方式。
Bean的不同配置方式比较与应用场景的更多相关文章
- IoC容器装配Bean(xml配置方式)(Bean的生命周期)
1.Spring管理Bean,实例化Bean对象 三种方式 第一种:使用类构造器实例化(默认无参数) package cn.itcast.spring.initbean; /** * 使用构造方法 实 ...
- Spring中Bean的不同配置方式
Bean的配置方式一共分为三种: 1.基于XML(适用于第三方类库,无法在类中写注解以及写命名空间的配置等情况) 2.基于注解(适用于大部分情况) 3.基于Java类 以下是三种不同情况的配置方式 ...
- Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析
Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析 本文简要介绍了基于 Spring 的 web project 的启动流程,详细分析了 Spring 框架将开发人员基于 XML ...
- springmvc的系统学习之配置方式
资源:尚学堂 邹波 springmvc框架视频 一.springMVC 工作流程 页面请求---->控制器(Controller DispatcherServlet)----& ...
- SpringMVC(一)-- springmvc的系统学习之配置方式
资源:尚学堂 邹波 springmvc框架视频 一.springMVC 工作流程 页面请求---->控制器(Controller DispatcherServlet)----& ...
- Bean 注解(Annotation)配置(1)- 通过注解加载Bean
Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of ...
- 【Spring3.0系列】---Bean不同配置方式比较 和适用场合
Bean不同配置方式比较1.基于XML配置定义:在XML文件中通过<bean>元素定义Bean,例如<bean class="com.bbt.UserDao"/& ...
- Bean不同配置方式比较
基于XML配置 基于注解配置 基于Java类配置 Bean定义 在XML文件中通过<bean>元素定义Bean,如:<bean class="com.bbt.UserD ...
- 【转】Spring 中三种Bean配置方式比较
今天被问到Spring中Bean的配置方式,很尴尬,只想到了基于XML的配置方式,其他的一时想不起来了,看来Spring的内容还没有完全梳理清楚,见到一篇不错的文章,就先转过来了. 以前Java框架基 ...
随机推荐
- 【每日Scrum】第一天(4.11) TD学生助手Sprint1计划会议成果
[每日Scrum]第一天 TD学生助手Sprint1计划会议成果 ——小组成员:刘铸辉 刘静 何晓楠 谢凤娇 胡宝月 王洪叶 初次尝试敏捷开发Scrum计划流程开发项目,有什么不对的地方还希望各位大 ...
- HDMI速率计算
我们在采集HDMI口的数据时,首先肯定要计算它的速率是多少.怎么计算这个速率,本文要跟大家分享的便是这个事情. HDMI口有三个TM-DS(Time Minimized Differential Si ...
- FastDFS的配置、部署与API使用解读(5)FastDFS配置详解之Tracker配置(转)
本文是 tracker.conf 配置文件的详细介绍. 1 基本配置 disable #func:配置是否生效 #valu:true.false disable=false bind_addr #fu ...
- .Net Core表单验证
验证 attributes: Attributes Input Type [EmailAddress] type=”email” [Url] type=”url” [HiddenInput] type ...
- 分布式开源调度框架TBSchedule原理与应用
主要内容: 第一部分 TBSchedule基本概念及原理 1. 概念介绍 2. 工作原理 3. 源代码分析 4. 与其它开源调度框架对照 第二部分 TBSchedule分布式调度演示样例 1. TBS ...
- C语言宏定义时#(井号)和##(双井号)作用
#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量 通过替换后在其左右各加上一个双引号. #define example(instr) prin ...
- 06 HTTP协议缓存控制
一:HTTP协议缓存控制 第1次请求时 200 ok 第2次请求时 304 Not Modified 未修改状态 解释: 在网络上,有一些缓存服务器,另, 浏览器自身也有缓存功能. 当我们第一次某图片 ...
- 不为客户连接创建子进程的并发回射服务器( select实现 )
前言 在此前,我已经介绍了一种并发回射服务器实现( 点此进入 ).它通过调用fork函数为每个客户请求创建一个子进程.同时,我还为此服务器添加了自动消除僵尸子进程的机制.现在请想想,在客户量非常大的情 ...
- Operation not permitted - /usr/bin/pod
问题描述:执行sudo gem install cocoapods, 提示出错:While executing gem ... (Errno::EPERM) Operation not per ...
- JAVA虚拟机、Dalvik虚拟机和ART虚拟机简要对照
1.什么是JVM? JVM本质上就是一个软件,是计算机硬件的一层软件抽象,在这之上才干够运行Java程序,JAVA在编译后会生成相似于汇编语言的JVM字节码,与C语言编译后产生的汇编语言不同的是,C编 ...