Spring5概述:
spring 是一个开源的轻量级JavaSE(Java 标准版)/Java EE(企业版)开发应用框架,其目的用于简化企业级应用程序开发。spring帮我们管理对象及其依赖关系,还提供了像日志记录,性能统计,安全控制,异常处理等面向切面的能力,还帮我们管理最头痛的数据库事务,本身提供了一套简单的JDBC访问实现,提供了与第三方数据访问框架集成(如:Hibernate,JPA),与各种Java EE技术整合(如:Java Mail,任务调度等等),提供一套自己的web层框架Spring MVC,而且还能非常简单的与第三方web框架集成。从这里我们可以认为Spring是一个超级粘合平台,除了自己提供功能外,还提供粘合其它技术和框架的能力。
Spring设计的初衷:
四个字:简化开发
spring立志于全方面简化开发。四个关键策略:
1.基于POJO的轻量级和最小侵入性编程。
2.通过依赖注入和面向接口松耦合。
3.基于切面和惯性进行声明式编程。
4.通过切面和模版减少样板式代码。
而他主要通过:面向bean,依赖注入以及面向切面这三种方式来达成。
BOP编程:
Spring是面向bean的编程,Bean在spring中才是真正的主角。Spring提供了IOC容器通过配置文件和注解方式来管理对象之间的依赖关系。
依赖注入:
spring设计的核心beans包(架构核心是core包),它的设计目标是和Java Bean组件一起使用。这个包通常不会让用户直接使用,而是由服务器用作多数功能的底层中介。BeanFactory接口,它是工厂模式实现,允许通过名称创建和检索对象,也可以管理对象之间的关系。
BeanFactory支持两个对象模型。
1.单例:模型提供了具有特定名称的对象的共享实例,可以在查询时对其进行检索。SingLeton是默认的也是最常用的对象模型。
2.原型:模型确保每次检索到的对象都能单独创建。在每个用户都需要自己的对象时,原型模式最适合。
Bean工厂的概念是spring作为IOC容器的基础。IOC则将处理事情的责任从应用程序代码转移到框架。
AOP编程理念:
面向切面编程(AOP)是一种编程思想。它允许程序员对横切关注点或横切典型的职责分界线的行为进行模块化。AOP的核心构造是方面(切面),它将那些影响到多个类的行为封装到重用模块中。
AOP和IOC都是补充性技术,他们都运用模块化方式解决企业应用程序开发中复杂的问题。在典型的面向对象开发方式中,可能要将日志记录语句放到所有的方法和JAVA类中才能实现日志功能。在AOP方式中,可以反过来将日志服务模块化,并以声明的方式将他们应用到需要日志的组件上。JAVA类不需要知道日志服务的存在,也不需要考虑相关代码。所以,AOP编写的应用代码是松耦合的。
AOP功能完全集成到了Spring事务管理,日志,和其它特性的上下文中。
AOP编程常用场景:Authentication权限认证,Logging日志,Transctions Manager事务,Lazy Loading懒加载,Context Process 上下文处理,Error Handler错误跟踪(异常捕获机制),Cache缓存。