Spring IOC和AOP 基础
1 spring中注入资源是通过描述来实现的,在 spring 中是通过注解或者 XML 描述。spring 中IOC 注入方式有三种
1)构造方法注入
2)setter 注入
3)接口注入
1.1)构造注入主要是依靠类的构造方法进行注入。比如角色类 Role, 构造方法中有三个属性,编号ID、角色名roleName和备注note
<bean id="role" class="Role">
<constructor-arg index="" value="">
<constructor-arg index="" value="CEO">
<constructor-arg index="" value="公司老大">
</bean>
1.2)setter 注入,这种方式更灵活。上面的例子,需要有无参构造函数,各个属性需要有setter 方法。
<bean id="role" class="Role">
<property name="id" value="">
<property name="roleName" value="CEO">
<property name="note" value="公司老大">
</bean>
2 Spring 的 AOP 是基于动态代理实现的,Spring 的数据库事务是在进入 invoke 方法里面然后判断是否需要拦截,需要的时候才根据注解和配置生成数据库事务切面上下文。
注意:如果在事务里面调用自己其他事务方法,被调用的方法上的注解不起作用,仍然是第一个事务的注解。
是因为自调用是新的代理对象的,是原始对象的调用。所以根本就没有 invoke 方法去解析注解和配置生成数据库切面的上下文,独立事务也无从谈起。
如果想要insertRole 方法配置生效,就需要独立写一个类,再去调用 insertRole 方法。

Spring IOC和AOP 基础的更多相关文章
- 170511、Spring IOC和AOP 原理彻底搞懂
Spring提供了很多轻量级应用开发实践的工具集合,这些工具集以接口.抽象类.或工具类的形式存在于Spring中.通过使用这些工具集,可以实现应用程序与各种开源技术及框架间的友好整合.比如有关jdbc ...
- 【转】spring - ioc和aop
[转]spring - ioc和aop 1.程序中为什么会用到spring的ioc和aop 2.什么是IOC,AOP,以及使用它们的好处,即详细回答了第一个问题 3.原理 关于1: a:我们平常使用对 ...
- J2EE进阶(十四)超详细的Java后台开发面试题之Spring IOC与AOP
J2EE进阶(十四)超详细的Java后台开发面试题之Spring IOC与AOP 前言 搜狐畅游笔试题中有一道问答题涉及到回答谈谈对Spring IOC与AOP的理解.特将相关内容进行整理. ...
- Spring笔记:AOP基础
Spring笔记:AOP基础 AOP 引入AOP 面向对象的开发过程中,我们对软件开发进行抽象.分割成各个模块或对象.例如,我们对API抽象成三个模块,Controller.Service.Comma ...
- Spring IOC及AOP学习总结
一.Spring IOC体系学习总结: Spring中有两个容器体系,一类是BeanFactory.还有一类是ApplicationContext.BeanFactory提供了基础的容器功能.Appl ...
- spring - ioc和aop
1.程序中为什么会用到spring的ioc和aop 2.什么是IOC,AOP,以及使用它们的好处,即详细回答了第一个问题 3.原理 关于1: a:我们平常使用对象的时候,一般都是直接使用关键字类new ...
- Spring ioc与aop的理解
一 spring的特点 1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2.可以使用容易提供的众多服务,如事务管理,消息服务等 3.容器提供单例模式支持 4.容器提供了AOP技术,利用它很容易 ...
- spring IOC与AOP
Spring IOC容器 spring IOC 容器有两种,分别是 BeanFactory 容器和 ApplicationContext 容器. BeanFactory如下: /*第一步,利用Clas ...
- Spring IOC、AOP、Transaction、MVC小结
1.IOC.AOP:把对象交给Spring进行管理,通过面向切面编程来实现一些“模板式”的操作,使得程序员解放出来,可以更多的关注业务实现. - ...
随机推荐
- mysql 监控工具
zabbix和grafana是绝配. pmm的prometheus太占资源了
- gropf
http://blog.csdn.net/yetyongjin/article/details/7717464 带-pg编译程序$ gcc -pg -o test test.c先运行程序$ ./tes ...
- Appium+python自动化14-查看webview上元素(DevTools)
前言 app上webview的页面实际上是启用的chrome浏览器的内核加载的,如何把手机的网页加载到电脑上,电脑的chrome浏览器上有个开发模式DevTools,是可以方便调试的. 一.环境准备 ...
- Java集合类ArrayList循环中删除特定元素
在项目开发中,我们可能往往需要动态的删除ArrayList中的一些元素. 一种错误的方式: <pre name="code" class="java"&g ...
- jquery hide和show方法
html 元素的显示和隐藏hide() 如果被选的元素已被显示,则隐藏该元素. show() 如果被选的元素已被隐藏,则显示该元素. <html> <head> <scr ...
- 如何为Failover Cluster添加Quorum disk
无废话, 上图.
- log4net 使用笔记
一.Log4net特征 1.自定义日志输出级别 Log4net将日志分为五个级别优先级从高到低依次:FATAL > ERROR > WARN > INFO > DEBUG,此外 ...
- Android -- sqlite数据库随apk发布
背景 把在工程中测 ...
- Mac版小黑屋提示无法确认开发者身份的解决办法
Mac版小黑屋提示无法确认开发者身份的解决办法 学习了:https://jingyan.baidu.com/article/37bce2be703fa21003f3a259.html 需要按住cont ...
- 微信小程序 - 自定义components组件详解A篇
官网API:https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/component.html 自定义 ...