一个菜鸟怎么了 2017-08-24 04:05 采纳率: 0%
浏览 7296

什么是AOP?怎么理解AOP与IOC?

整理了半天的文档,就知道AOP是面向切面编程降低耦合度的。求大神解答

  • 写回答

3条回答 默认 最新

  • MY_MAIN 2017-08-24 06:42
    关注

    个人理解

    IOC:控制反转(DI依赖注入),将以前由我们自己手动创建对象的过程交给了Spring,Spring帮助我们生产对象、管理对象、管理对象和对象之间的依赖关系。降低了代码的耦合度,方便我们后期对项目做维护。

    三种注入方式:
    1.setter注入
    2.构造器注入
    3.属性注入(注解)
    @Autowired:默认根据类型进行匹配
    @Resource:首先根据名称进行匹配,再根据类型进行匹配

    自动装配autowire属性

    AOP:面向切面(方便)编程,可以为某一类对象 进行监督和控制,也就是在调用这类对象的具体方法的前后去调用你指定的功能模块,从而达到对一个模块扩充的功能。可以通过注解或者XML文档进行实现。  

    开发切面,切面里面写的功能模块,叫做通知。
    前置通知@Before、后置通知@AfterReturning、最终通知@After、异常通知@AfterThrowing、环绕通知@Around

    后置通知和最终通知的区别:
    后置通知只有在方法正常执行后才会被调用,如果方法执行过程中报错,则不会执行后置通知,而是执行异常通知。
    无论方法执行有没有报错,都会执行最终通知

    AOP最重要的一个应用:Spring的事务管理器。

    Spring的事务管理器就是一个切面,切面中的功能不再是计算时间、输出日志,而是管理事务。因为Spring的事务管理器要对一组数据库操作做事务控制。所以事务管理器需要切入到一个可以包含所有Dao操作的方法中,即Service方法。

    Spring事务管理器的特点:所有的事务,要么同时提交,要么同时回滚。只要有一次失误失败,所有事务一起回滚。
    JDBC事务的特点:每执行完一次数据库操作就提交一次事务。

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!