对于Spring中IOC与AOP的理解

初次使用博客,望各位多多指教!!

今天仔细看了一下spring的IOC与AOP,终于理解了,其实非常简单。

IOC(控制反转):所谓控制反转,顾名思义就是将控制权进行反转,一般传统的创建对象的方法是程序员主动去进行创建,在哪儿用就在哪儿创建。如下图,我想在teacher类中获取到学生的名字,那就要在teacher类中创建学生对象去获取姓名。

对于Spring中IOC与AOP的理解 

下图为setter注入,构造注入敬请期待。。。

对于Spring中IOC与AOP的理解对于Spring中IOC与AOP的理解对于Spring中IOC与AOP的理解

而控制,反转就是将创建对象的控制权交给了spring容器去管理,当你需要创建对象的时候只需要去容器中去获取。DI(依赖注入)也是一样,只要你在配置文件中写好依赖关系,spring容器启动后会自动去创建对象并注入依赖,程序员只需要将全部精力放在处理逻辑问题上面。

AOP(面向切面):面向切面就相当于要将一个圆柱体从中间切开,然后加入自己想要扩展的功能

其中<aop:pointcut></aop:pointcut>为切点,定义的是在什么地方切;

<aop:aspect></aop:aspect>为切面,定义的是在切点处要干什么,并且是什么时候干

<aop:config>
    <aop:pointcut id="pointcut" expression="execution(* com.spring.service.StudentService.saveStudent())"/> <!--此处定义切点,即在什么地方切-->
    <aop:aspect ref="stuDao">   <!--配置切面,即在切点处增加一个外来的功能-->
        <aop:before method="before" pointcut-ref="pointcut"/>
    </aop:aspect>
    
</aop:config>

还有一个是有关事务通知的,<aop:advisor></aop:advisor>如

<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="delete" propagation="REQUIRED"/>
    </tx:attributes>
</tx:advice>

<aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"/>
advice-ref意为通知的引用,而pointcut-ref就是定义切点,在执行到这一切点时,触发txAdvice,txAdvice中的方法以事务方式进行执行。
有错误之处望各位能够指出