Spring| 初识DI和AOP2

    xiaoxiao2022-07-07  190

    文章目录

    依赖注入(dependencyinjection, DI)面向切面编程(aspect-oriented programming,AOP)Spring的使命总结

    Spring致力于简化企业级Java开发, 促进代码的松散耦合。 成功的关键在于依赖注入和AOP。


    依赖注入(dependencyinjection, DI)

    解释: DI是组装应用对象的一种方式,借助这种方式对象无需知道依赖来自何处或者依赖的实现方式。 不同于自己获取依赖对象, 对象会在运行期赋予它们所依赖的对象。 依赖对象通常会通过接口了解所注入的对象, 这样的话就能确保低耦合。简单的说就是多态的使用. 作用: DI能够让相互协作的软件组件保持松散耦合

    不使用依赖注入的情况,对象的产生在类内部(紧耦合)

    使用依赖注入的情况(松耦合,运行时才知道正真的实例对象)


    面向切面编程(aspect-oriented programming,AOP)

    解释: AOP可以帮助应用将散落在各处的逻辑汇集于一处——切面。 当Spring装配bean的时候, 这些切面能够在运行期编织起来, 这样就能非常有效地赋予bean新的行为。 作用: 把遍布应用各处的功能分离出来形成可重用的组件 实践应用: 基于SpringAOP的日志模块 (需要调研) 基于SpringAOP的安全模块 (需要调研) 基于SpringAOP实现声明式事务和安全(第9章和第14章) 。

    比如: 讲师开始上课,要开始计时打开(输入上课日志,和下课日志,来配置) 不使用切面编程时,每个对象不但要知道它需要记日志、 进行安全控制和参与事务, 还要亲自执行这些服务。

    使用AOP系统范围内的关注点覆盖在它们所影响组件之上,不改变原有业务逻辑

    举例子说明: 无AOP时如何实现

    有AOP时的实现?


    Spring的使命

    Spring 可以做非常多的事情。 但归根结底, 支撑Spring的仅仅是少许的基本理念, 所有的理念都可以追溯到Spring根本使命上: 简化Java开发。为了降低Java开发的复杂性, Spring采取了以下4种关键策略:

    基于POJO的轻量级和最小侵入性编程;通过依赖注入和面向接口实现松耦合;基于切面和惯例进行声明式编程;通过切面和模板减少样板式代码。

    POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。 使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的类,没有业务逻辑,有时可以作为VO(value -object)或dto(Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。 参考: https://baike.baidu.com/item/POJO/3311958?fr=aladdin

    总结

    DI(依赖注入)和AOP (切面编程)是Spring框架最核心的部分, 因此只有理解了如何应用Spring最关键的功能, 你才有能力使用Spring框架的其他功能。 本文, 我们只是触及了Spring DI和AOP特性的皮毛。 在接下来的文章中,我们将深入探讨DI和AOP。

    最新回复(0)