springIOC和AOP

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>
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值