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

什么是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 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记