Spring in action——01.Spring核心

2019-09-16  本文已影响0人  王侦

Java最根本的使命:简化Java开发。

是如何简化Java开发的?

1.激发POJO潜能与依赖注入

侵入式编程方式:很多框架通过强迫应用继承它们的类或实现它们的接口从而导致应用于框架绑死。

任何应用都会由多个类组成,这些类相互之间进行协作来完成特定的业务逻辑。传统做法是,每个对象负责管理与自己相互协作的对象(即它所依赖的对象)的引用,这回导致高度耦合和难以测试的代码。

DI——对象的依赖关系将由系统中负责协调各对象的第三方组件在创建对象的时候进行设定。对象无需自行创建或管理它们的依赖关系。


测试也很简单,只需要给定接口一个mock实现即可。

装配(wiring)—— 创建应用组件之间协作的行为。Spring有多种装配bean的方式,采用XML是一种,使用Java注解来描述配置也是一种方式。

总结:

2.应用切面

DI能够让相互协作的软件组件保持松散耦合,而面向切面编程(aspect-oriented programming——AOP)允许你把遍布应用各处的功能分离出来形成可重用的组件。

横切关注点:诸如日志、事务管理和安全这样的系统服务经常融入到自身具有核心业务逻辑的组件中去,这些系统服务通常被称为横切关注点,因为它们会跨越系统的多个组件。

如果将这些关注点分散到各个组件中去,代码将会带来双重的复杂性。


如图,左边的业务对象与右边的系统级服务结合得过于紧密。每个对象不但要知道它需要记日志、进行安全控制和参与事务,还要亲自执行这些服务。

AOP能够使这些服务模块化,并以声明的方式将它们应用到它们需要影响的组件中去。所造成的结果就是这些组件会具有更高的内聚性并且会更加关注自身的业务,完全不需要了解涉及系统服务所带来的复杂性。总之,AOP能够确保POJO的简单性。

可以将切面想象为覆盖在很多组件之上的一个外壳。借助AOP,可以使用各种功能区包裹核心业务层。可以将安全、事务和日志关注点与核心业务逻辑相分离。


3.使用模板消除样板式代码

样板式代码:重复写类似代码,例如使用JDBC访问数据库查询数据(大部分操作都是雷同的)。JMS、JNDI和使用REST服务通常也涉及大量的重复代码。

Spring旨在通过模板封装来消除样板式代码。JdbcTemplate使得执行数据库操作时,避免传统的JDBC样板代码。使之仅仅关注于核心的业务逻辑。

4.Spring容器

Spring容器负责创建对象,装配它们,配置它们并管理它们的整个生命周期。

Spring容器并不是只有一个。可以归为两种不同的类型:

Spring自带了多种类型ApplicationContext:

5.bean的生命周期

6.Spring体系架构

7.Spring Protfolio

参考官方主页
包括多个构建于核心Spring框架之上的框架和类库。几乎为每一个领域的Java开发都提供了Spring编程模型。

上一篇 下一篇

猜你喜欢

热点阅读