导语
  Spring框架作为企业中最常用的框架,是为了降低企业级开发的复杂性,现在经过发展它可以做的事情也是越来越多了。但是尽管Spring家族的东西已经越来越多,越来越健全,但是它的核心理念是不变的。最终的目的都是简化开发。很多语言框架的出现都是为了简化开发,而Spring 的出现就是为了简化Java开发。


文章目录

  • Spring设计初衷
  • BOP编程
  • 理解BeanFactory
  • AOP编程理念


Spring设计初衷

  Spring框架在企业级开发的框架简化上已经做到了极致,地位也是定位简化Java开发,为了简化Java开发实现了如下的4个关键策略。

  • 1、基于POJO 轻量级和最小侵入性编程原则。
  • 2、通过依赖注入和面向编程来实现松耦合。
  • 3、基于切面和惯性进行声明式编程
  • 4、通过切面和模板减少样板式代码。

  实现上面的四种策略主要用到了 面向Bean编程(BOP)、依赖注入(DI)、面向切面(AOP)三种方式实现。

BOP编程

  Spring是面向Bean的编程,也就是说Bean才是Spring的真正的主角,Bean对于Spring的意义就是Object对于OOP的意义一样,Spring中没有Bean,也就没有Spring存在的意义了。Spring IOC 容器通过配置和注解的方式来管理对象之间的关系。
  控制反转的基本概念就是,不创建对象 ,但是描述了对象的创建方式,再代码中不直接与对象和服务连接,而是在配置文件中进行服务对象关系描述。

理解BeanFactory

  Spring 设计的核心包org.springframework.beans 的设计目标就是和JavaBean 一起使用,这个包里面的内容一般不由用户直接进行操作。而是把它们作为底层的功能进行使用。Spring的最高抽象是BeanFactory接口,它是工厂模式实现,允许通过名称创建对象和检索对象,当然BeanFactory也可以管理对象之间的关系,有点类似于建造者模式。
  BeanFactory底层支持两个对象模型。

  • 单例模型:提供了具有特定名称的全局共享对象。可以在检索对象的时候快速定位对象。
  • 原型模型:确保每次检索都会创建一个单独的对象,在每个用户都要自己使用的对象的时候,都是使用原型模式。

  BeanFactory是作为IOC容器的基础,IOC则是将应用程序处理对象关系转换成框架处理对象关系。

AOP编程理念

  AOP也就是面向切面编程,是一种编程思想,允许程序员对横切关注点或横切典型的职责分界线的行为,例如常用的就是日志和事务的处理。AOP的核心是构造切面,将影响多个类的行为封装到一个通用的可重用模块中。
  AOP 和IOC技术都是补充性的技术,采用模块化的方式解决企业应用程序开发中的复杂问题。在传统的编程中,需要将日志类声明到具体的Java业务类中才能记录该类的操作日志。但是采用AOP模块化的方式,可以让日志作为一个模块化的服务,以声明的方式将其运用到框架中,这个优势就在于Java类本身是不知道日志服务存在,所以也就不需要考虑日志的相关内容,可以动态配置存在与否。所以这就是Spring AOP编程的松耦合性。
  AOP的功能完全集成到Spring事务、日志以及其他特性中。主要使用的场景有如下几个

  • 1、Authentication(权限认证)
  • 2、AutoCaching(自动缓存)
  • 3、Error Handling(错误处理)
  • 4、Debugging(调试)
  • 5、Logging(日志)
  • 6、Transaction(事务)等