InitializingBean的作用
来源:互联网 发布:付款时淘宝系统异常 编辑:程序博客网 时间:2024/05/23 23:46
InitializingBean的作用
转自http://blog.csdn.net/mqboss/article/details/7452331
最近工作需要得到sping中的每个事物需要执行的sql,称机会简单研究了一下spring的事务,项目中管理事务比较简单,用TransactionTemplate,就直接以TransactionTemplate为入口开始学习。
TransactionTemplate的源码如下:TransactionTemplate继承了DefaultTransactionDefinition,实现了TransactionOperations,InitializingBean接口。先研究InitializingBean接口
InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候会执行该方法。
测试程序如下:
配置文件如下:
Main主程序如下:
运行Main程序,打印如下结果:
ceshi InitializingBean
这说明在spring初始化bean的时候,如果bean实现了InitializingBean接口,会自动调用afterPropertiesSet方法。
问题:实现InitializingBean接口与在配置文件中指定init-method有什么不同?
修改配置文件,加上init-method配置,修改如下:
在配置文件中加入init-method="testInit"。
运行Main程序,打印如下结果:
ceshi InitializingBean
ceshi init-method
由结果可看出,在spring初始化bean的时候,如果该bean是实现了InitializingBean接口,并且同时在配置文件中指定了init-method,系统则是先调用afterPropertiesSet方法,然后在调用init-method中指定的方法。
这方式在spring中是怎么实现的?
通过查看spring的加载bean的源码类(AbstractAutowireCapableBeanFactory)可看出其中奥妙
AbstractAutowireCapableBeanFactory类中的invokeInitMethods讲解的非常清楚,源码如下:
总结:
1:spring为bean提供了两种初始化bean的方式,实现InitializingBean接口,实现afterPropertiesSet方法,或者在配置文件中同过init-method指定,两种方式可以同时使用
2:实现InitializingBean接口是直接调用afterPropertiesSet方法,比通过反射调用init-method指定的方法效率相对来说要高点。但是init-method方式消除了对spring的依赖
3:如果调用afterPropertiesSet方法时出错,则不调用init-method指定的方法。
4:TransactionTemplate实现InitializingBean接口,主要是判断transactionManager是否已经初始化,如果没有则抛出异常。源码如下:
阅读全文
0 0
- InitializingBean的作用
- Spring InitializingBean的作用
- InitializingBean接口的作用
- Spring InitializingBean的作用
- Spring InitializingBean的作用
- Spring: InitializingBean的作用
- InitializingBean的作用
- InitializingBean的作用
- Spring InitializingBean接口的作用
- InitializingBean 接口作用
- spring的InitializingBean介绍
- spring的InitializingBean介绍 .
- spring的InitializingBean介绍
- spring的InitializingBean介绍
- Spring的InitializingBean接口
- InitializingBean的使用
- InitializingBean
- InitializingBean
- Android中实现连续点击功能
- sass函数功能
- Android中补间动画2----Animation的基本使用代码实现复合使用
- NodeJs 读取服务器文件
- Git
- InitializingBean的作用
- centos6.4下MySQL数据库的安装和配置(超详细,超实用!)
- 用SMO算法求解支持向量机(SVM)pythony源代码(三)
- AcDbHatch::setPatternAngle
- GB28181知识培训ppt
- idea 项目启动报错解决,java.lang.OutOfMemoryError:Java heap space
- 设计模式——代理模式
- Ubuntu下自动启动终端并运行脚本或命令
- 【Scikit-Learn 中文文档】特征选择