Spring boot 全面学习笔记(1)

JAVAEE 回顾Java EE 是一种企业应用的软件架构。Java EE 与Web : 互联网从根本上改变了对企业软件的系统需求,软件需要处理来自互联网的大量请求, 并要及时做出响应。Java EE 与分布式应用: 20 世纪80 年代, 个人计算机性价比逐渐达到了高端工作站和服务器的水准,使分布式计算应用迅速普及。SUN 在推出Java 后,紧接着推出了远程方法调用RMI,并在90 年...
摘要由CSDN通过智能技术生成

JAVAEE 回顾

Java EE 是一种企业应用的软件架构。

  • Java EE 与Web : 互联网从根本上改变了对企业软件的系统需求,软件需要处理来自互联网的大量请求, 并要及时做出响应。
  • Java EE 与分布式应用: 20 世纪80 年代, 个人计算机性价比逐渐达到了高端工作站和服务器的水准,使分布式计算应用迅速普及。SUN 在推出Java 后,紧接着推出了远程方法调用RMI,并在90 年代末期, 以RMI 为通信基础构建了JavaEE 。
  • 在相当长的一段时间里, Java EE 就是一种分布式应用,这让Java EE 战胜了CORBA 、. COM+,但是也带来了巨大的系统交互开销(超出一个数量级的) 。毕竟不是所有的企业应用和互联网应用都是分布式的, 这让一些人认为JavaEE 架构有问题。然而这并不是Java EE 的错, 在市场上, Java EE 需要迎合当时的分布式技术潮流。现在如果你不用分布式, Java EE 也同样提供了相关技术供你使用, 如Local E JB 。
  • 作为企业应用或者互联网应用的架构, 总有如下功能需求, Java EE 有相应的规范实现与之对应。
    • Web 支持: 企业应用、互联网应用越来越多的是基于B / S 的结构, Java EE 对应的有Servlet 规范,规定了Web 容器、Servlet 组件, 还设有JSP&JSTL 处理动态页面。
    • 事务支持: 提供事务管理器,支持管理事务,如单一数据库、多个数据库,以及数据库和其他资源的事务协作等。Java EE 里提供了JTA 事务API 和JTS 事务服务规范。事务支持也实现了分布式事务管理, 管理多个数据库或者支持事务的资源。
    • 消息服务: 企业各个系统、系统模块之间通过消息服务进行并步交互, Java EE 提供了JMS 服务, 用于系统间可靠的消息交互。
    • 数据库持久层、Java EE 先有EJB 规范, 后来又提出了更有实际操作性的JPA , 这些都是企业访问数据库常用的方法。
    • Container: 提供了WebContainer , 用于实现Servlet ,以及EJB Container ,实现EJB,Container 用于管理这些组件,并提供组件需要的服务, 比如JTS 、JMS 等。

其他技术还包括如下所述的内容。

  • JWS : 这也是分布式系统交互的一种方式, 是Java 实现的一种WebService 。
  • JAX-RS: Java EE 6 引入的新技术,通过阻ST 进行交互。
  • JNDI : 查找服务和对象的接口,如查找一个配置好的数据源。
  • JAXP / JAXB: XML 流行的时候,解析和绑定Ja va B ean 的XM L 工具。
  • JAX-RPC :分布式系统交互的一种方式,通过RPC 方式调用。
  • JACC : 安全认证。
  • Java EE Application Server:提供了上述所有服务的Web 服务器,我们常用的Tomcat 、Resin , 只能算是Java EE Web 服务器,开源的JBoss 、商业的weblogic 等称为应用服务器。
    综上所述, Java EE 提供了企业应用技术的实现规范,简化了企业应用和Web 开发,如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-meSveU2N-1577433226125)(C:\Users\wangxf\AppData\Roaming\Typora\typora-user-images\1577354972450.png)]

RMI可参考https://www.jianshu.com/p/de85fad05dcb

RMI和RCP区别https://cloud.tencent.com/developer/article/1353191

JAVAEE缺点

  • 过于复杂: Java EE 针对的是复杂的分布式企业应用,然而现实情况是大部分应用都比
    较简单,复杂的架构带来了复杂的开发方式和部署方式(早期的Java EE 普通系统打包部署都需要数十分钟)
  • 追求分布式:大部分应用并非都是Java EE 假定的分布式系统,像EJB 、JMS 、JWS等技术实现门槛又高又容易出错。Spring 曾经反对过这种分布式架构,只提供了容器管理,因此获得了巨大成功。大型应用采用分布式架构不可避免, Spring 提供了其他的技术支持,比如支持RestFul架构。
  • 不能及时与流行开源技术结合:比如消息处理,除了有标准的JMS 支持,现在还有性能更好的RabbitMQ 和Kafka ,Java EE 并没有与之相应的标准,反而是Spring ,具有统一的实现消息处理模式,无论用的是JMS 、RabbitMQ ,还是性能更好的Kafka ,都能快速上手。
  • Java EE 应用服务器通常由商业公司提供,价格不菲,少有公司采用。管理应用服务器和部署应用对初学者和自学者有一定门槛。

从Spring到SpringBoot

认识一个事务最好的方式就是首先去了解它的历史。

Spring 框架是由Rod Johnson 在2001 年开始开发的一个开源框架,主要为了解决企业级应用程序开发的复杂性。

Spring 提倡“零”侵入设计原则,颠覆了传统的编程模式。
Spring 引人控制反转( Inversion of Control, IoC )的核心编程思想,控制反转还有一个名字叫作依赖注入( Dependency Inversion, DI ),就是由容器来管理协同Bean 之间的关系,而非传统实现中,由程序代码直接操控。同时, Spring 还把面向切面编程( AOP )集成进来,使得AOP 的编程范式发扬光大。
Spring 从IoC 容器发展而来,通过不断集成AOP , MVC 、OR/Mapping 以及几乎你能想到的各项服务而提供完善的企业应用框架。目前大多数J2EE 项目都已经采用Spring框架。

2014 年4 月发布Spring Boot 1.0 。2014 年12 月发布Spring 4.1 .3

2015 年7 月发布Spring 4.2

2016 年6 月发布Spring 4.3

2017 年9 月发布Spring 5.0

2017 年11 月发布Spring Boot v2. O.O.M7

2018 年3 月1 日发布Spring Boot v2.0.0.Release ;

Spring核心技术

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ayARUl47-1577433226126)(C:\Users\wangxf\AppData\Roaming\Typora\typora-user-images\1577257670674.png)]

  • Core 模块封装了框架依赖的最底层部分,包括资源访问、类型转换及一些常用工具类

  • Beans 模块中的主要组件是BeanFactory ,它是工厂模式的实现

  • Context 模块是一个配置文件,向Spring 框架提供上下文信息。

  • EL 模块提供强大的表达式语言支持。

  • Test 模块支持Junit 和TestNG 测试框架,而且还额外提供了一些基于S pring 的测试功
    能,比如在测试Web 框架时,模拟Http 请求的功能。

    核心技术可参考文章:https://blog.csdn.net/LUCKWXF/article/details/100881964

Spring 本身提供了两个最核心的技术一一IoC 容器和AOP 增强

在这里插入图片描述

  • loC Core Container: Spring Container 负责管理你的任意对象,并结合你对对象的描述进行初始化和加强。比如,对于一个用注解@Controller 声明的对象, Spring 会认为这个对象是个Web Controller ,如果这个对象里的方法有@RequestMapping 注解,则会将客户端发起的HTTP请求转化成Java 方法调用。

    @Controller
    public class HelloworldController {
         
    @RequestMapping ("/sayhello .html")
    public @ResponseBody String say(String name) {
         
    return ” hello ” +name;
    }
    

    上面的例子中, Spring Container 在容器中初始化HelloworldController 实例后,对于客户端发起的/sayhello.html 请求, 会执行say 方法,并自动将请求参数按照say 方法声明的名称一一对应上。

Spring 通常提供一些@Contra ller 、@Service 、 @Component 、@ Configuration 注解,只有使用这些注解的类才会引起Spring容器的注意,并根据注解含义来管理和增强对象。

Spring 可以管理和增强任意对象,如常见的@ Service 注解对象,通常用来处理业务逻辑,Spring Container 往往会增强这类对象的事务控制能力。

容器管理还可以为被管理的Bean 提供其他被管理和被增强的Bean ,如一个己经被@ Service注解的UserService 类, 在HelloworldController 类中,使用@ Auto wired 自动注入这个实例:

@Controller
public class HelloworldController {
   
@Autowired UserService userService;
}
  • AOP : 上面提到的对象增强离不开AOP 技术, AOP (Aspect Oriented Programming )指面向切面编程,通过预编译方式或者运行时刻对目标对象动态地添加功能。AOP 分离了企业应用的业务逻辑和系统级服务,比如事务服务,还有应用系统的审计、安全访问等代码。

    AOP (Aspect-Oriented P rogramming ,面向切面编程)提供了另外一种思路来实现应用系统的公共服务。AOP通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

原文链接:https://blog.csdn.net/LUCKWXF/article/details/100881964

AOP 之所以能得到广泛认可,主要是因为它将应用系统拆分分了2个部分:核心业务逻辑(Core business concerns)及横向的通用逻辑,也就是所谓的切面Crosscutting enterprise concerns。例如,所有大中
型应用都要涉及到的持久化管理(Persistent)、事务管理(TransactionManagement)、权限管理(Privilege Management)、日志管理(Logging)和调试管理(Debugging)等。使用AOP 技术,可以让开发人员只专注核心业务,而通用逻辑则使用AOP 技术进行横向切入,由专人去处理这些通用逻辑,会使得任务简单明了,提高开发和调试的效率。

Spring缺点

随着Spring 功能的不断丰富,版本的不断迭代发展, Spring 框架渐渐暴露出了一些问题和弊端。例如太多样板化的配置、烦琐复杂的使用过程等, 我们不仅需要维护程序代码,还需要额外去维护相关的配置文件。Spring 项目的配置越来越复杂,让人难以承受。大量的XML 配置以及复杂的依赖管理使得人们不得不去解决这个问题一-Spring Boot 由此应运而生。

  • 使用门槛升高, 要入门Spring 需要较长时间。
  • 对过时技术兼容, 导致使用复杂度升高。
  • XML 配置已经不是流行的系统配置方式。
  • 集成第三方工具时候,程序员还要考虑工具之间的兼容性。
  • 系统启动慢,不具备热部署功能,完全依赖虚拟机或者Web 服务器的热部署。

传统项目:整合SSH或者SSM,考虑配置文件、JAR包冲突问题、整合起来繁琐,打包方式:打包成一个War放入tomcatWebapps目录进行执行。

演示传统SSH整合项目。

什么是Spring Boot?

SpringBoot是一个快速开发框架,能够帮助我们快速整合第三方框架(Maven依赖关系 ## Maven继承) ,完全采用注解化,简化XML配置;内嵌Http服务器(Tomcat、Jetty),默认嵌入Tomcat服务器。最终以Java应用程序进行执行。

SpringBoot项目中没有Web.xml

原理:(Maven依赖关系 ## Maven继承) 完全采用注解化,Spring3.0之后采用注解方式启动SpringMVC、内嵌HTTP服务器 JAVA创建Tomcat。

Spring Boot优点

  • 相比于Spring, Spring Boot 具有以下优点:

  • 实现约定大于配置,是一个低配置的应用系统框架。不像Spring 那样“地狱般的配置体验”, Spring Boot 不需要配置或者极少配置,就能使用Spring 大量的功能。

  • 提供了内置的Tomcat 或者Jetty 容器。

  • 通过依赖的jar 包管理、自动装配技术,容易支持与其他技术体系、工具集成。

  • 支持热加载,开发体验好。也支持Spring B oot 系统监控,方便了解系统运行状况。

Spring Boot核心组件

在这里插入图片描述

  • spring-boot
    Spring Boot 核心工程。
  • starters
    是Spring Boot 的启动服务工程。spring-boot 中内
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值