springIOC

IOC(Inversion Of Control,控制反转):一个类的某个属性需要使用时,需要有本类自己初始化。而在spring类的某些属性不用自己初始化而交给了spring来管理。这样的转换就是IOC思想。Spring的IOC思想是,spring的IOC容器在初始化的时候就根据配置对相应的对象进行初始化,并放在容器中。同时根据配置对相应类的属性进行初始化。也就是DI(Dependency Injection依赖注入),至此类的初始化不需要类本身负责初始化而交给了spring容器。
IOC的好处是:降低耦合性:某个类的一个属性,以前是该类自己控制,而引人Spring后,这个类的属性由Spring控制。
Spring IOC的模拟所做的事情是:在xml文件配置好相应的bean,设置注入关系。在解析xml时候对bean进行初始化同时对相应属性进行注入。

  • 案例
<bean name="studao1" class="com.it.dao.StudentDAO"></bean><bean name="stusv1" class="com.it.services.StudentService"><property name="studao" ref="studao1"></property></bean><bean name="stuact" class="com.it.action.StudentAction"><property name="stusv" ref="stusv1"></property></bean>

其中properties中name指向的就是一个对象名称,ref是关联类,当spring容器调用改对象的时候,会自动初始化该类,初始化该类中属性

springAOP

AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待,Struts2的拦截器设计就是基于AOP的思想,是个比较经典的例子。

一 AOP的基本概念

(1)Aspect(切面):通常是一个类,里面可以定义切入点和通知

(2)JointPoint(连接点):程序执行过程中明确的点,一般是方法的调用

(3)Advice(通知):AOP在特定的切入点上执行的增强处理,有before,after,afterReturning,afterThrowing,around

(4)Pointcut(切入点):就是带有通知的连接点,在程序中主要体现为书写切入点表达式

(5)AOP代理:AOP框架创建的对象,代理就是目标对象的加强。Spring中的AOP代理可以使JDK动态代理,也可以是CGLIB代理,前者基于接口,后者基于子类

  • aop将用事务管理来说明

  • 事务管理器:谁管理

<bean id="htm"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory"></property></bean>

事务通知:以什么样的方式管理

<tx:advice id="txm" transaction-manager="htm"><tx:attributes><tx:method name="*" propagation="REQUIRED" rollback-for="java.lang.Exception"/></tx:attributes>
</tx:advice>
  • 事务的传播机制(事务通知的解释)
    propagation=“事务的传播机制”
    REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
    SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。
    MANDATORY:支持当前事务,如果当前没有事务,就抛出异常。
    REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。
    NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
    NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。
    NESTED:支持当前事务,如果当前事务存在,则执行一个嵌套事务,如果当前没有事务,就新建一个事务。
<tx:advice id="txm" transaction-manager="htm"><tx:attributes><tx:method name="*" propagation="REQUIRED" rollback-for="java.lang.Exception"/></tx:attributes></tx:advice>
  • 事务切点:管理谁
<aop:config><aop:advisor advice-ref="txm" pointcut="execution(* com.it.services.*.*(..))"/></aop:config>

springIOC和AOP相关推荐

  1. 手写springIOC、AOP

    手写springIOC.AOP 一.核心思想 1.IoC 1.1 什么是IoC? 1.2 IoC解决了什么问题 1.3 IoC和DI的区别 2.AOP 2.1 什么是AOP? 2.2 AOP解决的什么 ...

  2. SpringIOC 和AOP 的理解

    SpringIOC 和AOP 的理解 IOC(含义.举例.作用):控制反转,是一种设计思想,将原本需要自己手动创建的对象交由Spring框架来管理.(对象A需要对象B,原本是需要A自己创建对象B,现在 ...

  3. SpringIOC、AOP

    IOC和AOP是Spring的两大核心 IOC Inversion Of Control控制反转,控制反转通过DI(Denpendency Inject依赖注入)实现. Spring可以理解为一个容器 ...

  4. 面试汇总-Spring-IOC和AOP

    目录 1.控制反转(IOC) 1.1.实现原理(流程):(反射+XML技术) 1.2.IOC的好处 1.3.IOC类型 1.4.IOC的初始化过程 1.5.拓展:反射和new 2.AOP(面向切面编程 ...

  5. SpringIOC和AOP介绍

    Spring介绍 1.spring是轻量级的开源的JavaEE框架 2.Spring可以解决企业应用开发的复杂性 3.Spring有两个核心部分:IOC.AOP ​ (1)IOC:控制反转,把创建好的 ...

  6. springIOC和AOP的理解

    Spring的IOC理解 1.IOC 控制反转,是指创建对象的控制权转移,以前创建对象的主动权和时机是由自己把控的,而现在这种权力转移到spring容器中,并由容器根据配置文件去创建实例和管理各个实例 ...

  7. 彻底学会Spring的IOC和AOP——理论+实操

    目录 1 IOC 1.1 概念 1.2 底层原理 1.3 IOC容器 1.4 Bean管理:基于xml配置文件实现 1.5 两种类型的Bean 1.6 Bean的作用域 1.7 Bean的生命周期 1 ...

  8. java 排序stackoverflow_JAVA开发知识点

    一.Java基础和高级 1.String类为什么是final的. 在java中String类为什么要设计成final?​www.zhihu.com 2.HashMap的源码,实现原理,底层结构. 养兔 ...

  9. Java怎么学?实用的学习路线图分享

    不管在编程语言的排行榜中,还是在大多数企业应用的广泛程度来看,Java一直都是当之无愧的榜首.Java语言有着独特的魅力吸引着广大的年轻人去学习,每个人学习的方式方法不一样.本来就由小千跟大家一起分享 ...

最新文章

  1. ES强制删除docs.deleted 标记的文档 document
  2. GRPC协议的相关原理
  3. .NET Core 下使用 RabbitMQ
  4. 用数学模型向你解释离婚
  5. Exynos4412 Uboot 的使用与烧写
  6. Python实例讲解 -- wxpython 最小到托盘及欢迎图片
  7. 地球物理模型-薄互层-桔灯勘探
  8. 洛谷 P1426 小鱼会有危险吗(C语言)
  9. 质量属性效用树_知识之森-数据化你的quot;知识树”
  10. LeetCode : Intersection of Two Linked Lists
  11. Github-emoji表情图像大全
  12. 关于判断卡BIN的修正
  13. 【Excel,遗忘密码后如何撤销工作表保护密码】
  14. 20121214收藏
  15. sublime全解:从菜鸟到大师
  16. error C2039: ‘tr1‘: is not a member of ‘std‘
  17. 【Vue 组件化开发 三】父组件给子组件传递数据、组件通信(父传子、子传父)、父访问子(children、ref)、动态组件(is、component)
  18. PAT-B 1036. 跟奥巴马一起编程(15)(15 分) 画方型字符
  19. 计算机操作系统:处理机调度相关
  20. NBOOT分析-S3C244xInit.s(1)

热门文章

  1. 关于uart串口接收端乱码问题
  2. Android Jetpack-Lifecycle
  3. 1. 分类与回归树原理(CART)
  4. 计算机应用水平 软件,计算机应用水平一级考试系统软件的开发.pdf
  5. js中的数组方法以及循环数组的方法
  6. 路由器后面再接一个路由器怎么设置(二级路由)
  7. 《数字电子技术基础》读书笔记:存储器
  8. SequoiaDB分布式数据库2022.10月刊
  9. v63.04 鸿蒙内核源码分析(文件系统) | 用图书管理说文件系统 | 百篇博客分析OpenHarmony源码
  10. 如何用python画金字塔形状_用 Python 画一只福鼠