博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Spring3.0系列】---Bean不同配置方式比较 和适用场合
阅读量:7078 次
发布时间:2019-06-28

本文共 1451 字,大约阅读时间需要 4 分钟。

Bean不同配置方式比较

 

1.基于XML配置

定义:在XML文件中通过
元素定义Bean,例如
名称:通过
的id或name属性定义,例如:
默认名称为com.bbt.UserDao#0 注入:通过
子元素或通过p命名空间的动态属性,如p:userDao-ref="userDao"进行注入 生命过程方法:通过
的init-method和destroy-method属性指定Bean实现类的方法名,最多只能指定一个初始化和一个销毁方法 作用范围:通过
的scope属性指定,如
延迟初始化:通过
的lazy-init属性指定,默认为default,继承与
的default-lazy-init设置,该值默认为false

2.基于注解配置

定义:在Bean实现类处通过标注@Component或衍型类(@Repository  @Service  @Controller)定义Bean 名称:通过注解的value属性定义,如@Component("userDao")默认名称为小写字母打头的类名(不带包名)userDao 注入:通过在成员变量或方法入参处标注@Autowired,按类型匹配自动注入。还可以配合使用@Qualifier按名称匹配方式注入 生命过程方法:通过在目标方法上标注@PostConstruct和@PreDestroy注解指定初始化或销毁方法,可以定义任意多个方法 作用范围:通过在类定义处标注@Scope指定。如@Scope("prototype") 延迟初始化:通过在类定义处标注@lazy指定,如@Lazy(true)

3.基于Java类配置

定义:在标注了@Configuration的java类中,通过在类方法上标注@Bean定义一个Bean,方法必须提供Bean的实例化逻辑 名称:通过@Bean的name属性定义,如@Bean("userDao")默认名称为方法名 注入:比较灵活,可以在方法处通过@Autowired使方法入参绑定bean,然后在方法中通过代码进行注入,还可以通过调用配置类的@Bean方法进行注入 生命周期方法:通过@Bean的initMethod或destoryMethod指定一个初始化或销毁方法。对于初始化方法来说,可以直接在方法内部通过代码的方式灵活初始化逻辑 作用范围:通过在Bean方法定义处标注@Scope指定 延迟初始化:通过在Bean方法定义处标注@Lazy指定

Bean不同配置方式的适用场合

基于XML配置:Bean实现类来源于第三方类库,如DataSource,JdbcTemplate等,因无法在类中标注注解,通过XML配置方式较好。命名空间的配置,如aop  context等,只能采用基于XML的配置 基于注解配置:Bean的实现类是当前项目开发的,可以直接在Java类中基于注解的配置 基于Java类配置:基于Java类配置的优势在于可以通过代码控制Bean初始化的整体逻辑。所以如果实例化Bean的逻辑比较复杂,则比较适合用基于Java类配置的方式

转载于:https://www.cnblogs.com/dream-to-pku/p/5706501.html

你可能感兴趣的文章
新博客 Fighting
查看>>
python的单、双、多分支流程控制
查看>>
accept_mutex与性能的关系 (nginx)
查看>>
滚动条
查看>>
20. Valid Parentheses
查看>>
cssReset - css初始化
查看>>
mybatis generator Date类型时间丢失
查看>>
python 基础 4.5 用函数实现九九乘法表
查看>>
python 基础 9.2 mysql 事务
查看>>
利用表格分页显示数据的js组件datatable的使用
查看>>
shell编程系列13--文本处理三剑客之sed利用sed追加文件内容
查看>>
js操作大全(转)
查看>>
springmvc项目提交post表单参数乱码解决办法
查看>>
flask 第七章 简陋版智能玩具 +MongoDB初识和基本操作
查看>>
Maven之setting.xml 配置详解
查看>>
linux中运行.sql文件
查看>>
ftl 列表弄成js数组
查看>>
课后作业:字串加密
查看>>
REGEXP 正则的实现两个字符串组的匹配。(regexp)
查看>>
python爬虫之登录
查看>>