二、Spring中的概念介绍以及项目

一、Spring 核心概念介绍

1、控制反转(IoC)与依赖注入(DI)

概念

IoC:一种将组件依赖项的创建和管理外部化的技术。
举例说明:小王要制造一支笔,以前需要小王自己亲手做,Ioc就是把这项工作让第三方小明(容器:如工厂)来生成和管理。
DI:一种运行时将对象(包含属性)经过容器,交给另外一个对象的技术。IoC与DI的关系相当于一枚硬币的两面,因此它们是一体两面的关系,在Spring的上下文中,这些概念术语可以互换,而不会有任何损失
举例说明:小王通过第三方小明(容器:如工厂)制造了一支铅笔(对象),然后在小罗要使用时,经由第三方小明转交给小罗,而不是小王直接交给小罗。

使用IoC/DI的优势与缺点

优势

  1. 减少粘合代码(代码可重用)
  2. 简化应用程序配置(从mysql换到oracle数据库,只需要简单的配置业务对象的适当依赖项)
  3. 能够在单个存储中管理常见依赖项(将依赖项集中管理,使管理更加简单并且不易出错)
  4. 改进可测试性(只需要单纯的测试业务代码,并且可以分层测试(dao层,service层,domain层,controller层等),使测试更加简单清晰)
  5. 培养良好的应用程序设计(减少工作量,专注于业务,而不是框架,并且多使用接口以达到解耦效果)

缺点

  • 对不熟悉代码的人来讲,DI/IoC很难让他们知道某个特定依赖项的哪个实现与那个对象连接。

2、Spring 5的附加功能

  • 支持Java 9
  • 使用Spring 实现面向切面编程(AOP:Aspect Oriented Programming)
    • 支持AspectJ风格的切入点表达式
    • 支持@AspectJ注解(Spring 3.2开始)
    • 在AspectJ中实现DI方面的支持
    • 支持Spring A评评理cationContext中的加载时织入
  • Spring 表达式语言
    • 从Spring 3.0开始,引入了Spring表达式语言SpEL(Spring Exprssion Language),
    • 是一种标准表达式语言,替代其他的表达式语言EL(Expression Language),做统一表达式语言UEL(Unified Expression Language)。
  • Spring中的验证Validation,从Spring 4.0开始,JSR-349(Bean Validation)的1.1版本得到支持
  • 在Spring中访问数据:对JDBC API进行了简化封装,对(Sql与NoSql数据库访问,建议研究Spring Data项目)
  • Spring中的对象/XML映射(JavaBean与XML的相互转换)
  • 管理事务(编程式以及声明式事务控制)
  • 简化以及与JEE集成
  • Web层的MVC(Spring WebFlux与Spring MVC)
  • WebSocket支持(定义了一个用于在客户端和服务器之间穿件持久连接的API)
  • 远程支持(RMI,JAX-WS,JMS,AMQP,REST等)
  • 邮件支持
  • 作业调度支持
  • 动态脚本支持(Groovy,Jruby和BeanShell)
  • 简化的异常处理(非检查型异常unchecked exceptions:RuntimeException与其子类,以及错误(Error)

二、Spring 项目以及替代品

1、Spring各项目

  1. Spring工具套件(Spring IDE和Spring Tool Suite(STS)工具
  2. Spring Security(为web应用和方法级安全性提供全面的支持)
  3. Spring Boot(简化项目的创建工作)
  4. Spring 批处理和集成(Spring Batch和Spring Integration)
  5. 其他(Spring XD,Android for Spring,Spring Mobile,Spring Social 和 Spring AMQP,更多消息信息

2、Spring的替代品

  1. JBoss Seam框架(与Spring的主要区别是JBoss完全基于JEE标准开发)
  2. Google Guice
  3. PicoContainer
  4. JEE 7 容器

转载于:https://www.jianshu.com/p/26dd03e17d44

猜你喜欢

转载自blog.csdn.net/weixin_34146410/article/details/91272769