一个菜鸟怎么了 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事务的特点:每执行完一次数据库操作就提交一次事务。

    评论

报告相同问题?

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献