对于Spring中IOC与AOP的理解
初次使用博客,望各位多多指教!!
今天仔细看了一下spring的IOC与AOP,终于理解了,其实非常简单。
IOC(控制反转):所谓控制反转,顾名思义就是将控制权进行反转,一般传统的创建对象的方法是程序员主动去进行创建,在哪儿用就在哪儿创建。如下图,我想在teacher类中获取到学生的名字,那就要在teacher类中创建学生对象去获取姓名。
下图为setter注入,构造注入敬请期待。。。
而控制,反转就是将创建对象的控制权交给了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中的方法以事务方式进行执行。
有错误之处望各位能够指出