springboot简介

目录

Spring简介

注解和xml

Springboot的优点

传统Spring MVC和Spring Boot的对比


Spring简介

在没有开发 Spring 框架的时候,Java EE 以 Sun 命名(已被甲骨文收购,已不复存在,但为纪念其对 Java 开发的巨大影响,本书仍保留其名称作为致敬)  EJB(企业Java Bean)作为标准。 在“遥远”的 EJB 时代,开发 EJB 需要大量的接口和配置文件。 在 EJB 2.0 时代之前,开发一个 EJB 需要两个配置文件。 结果,配置的工作量大于开发的工作量。  .其次,EJB 运行在 EJB 容器中,而 Sun 定义的 JSP 和 Servlet 运行在 Web 容器中,所以可以想象需要使用 Web 容器来调用 EJB 容器的服务。 这意味着存在以下缺点:需要添加要调用的配置文件,以允许Web容器调用EJB容器; 同时需要开发两个容器,由于配置内容多,规范繁琐,开发效率很低,非常混乱。 当时的开发商批评; 对于从Web容器调用EJB容器服务的方式,注定需要通过网络传输,导致性能不佳; 对于测试人员来说,在进行配置和测试之前,他们还需要了解 EJB 的许多繁琐的细节。 也很难做到。

注解和xml

只有在 Spring 的早期 1.x 版本中,因为当时的 JDK 不支持注解,只能使用 XML。 而且JDK一升级到JDK5,就增加了注解的新特性,所以注解被广泛使用,所以Spring也分为两组,一组是使用XML的审批组,另一组是使用注解的同意组。 为了简化开发,Spring 2.x之后的版本中也引入了注解,但是只有少数注解,比如@Component、@Service等,功能不够强大,所以对于Spring开发来说,大部分情况下 , 以XML为主,注解为辅。

Spring 3.0之后引入了更多的注解功能,所以在Spring中出现了这么大的分歧,到底是用注解还是XML? 对于XML的引入,有人觉得太复杂了,使用注解会使得注解的分布无处不在,难以控制。 有时需要了解很多框架的内部实现,才能准确使用注解开发所需的功能。 这时候大家已经形成了这样一个不成文的共识,就是注解用于业务类。 比如对于MVC开发,控制器使用@Controller,业务层使用@Service,持久层使用@Repository; 而对于一些公共bean来说,例如XML用于数据库(如Redis)和第三方资源的配置,这种配置方式在今天的企业中仍然被广泛使用。 也许使用注释或 XML 是一个长期存在的话题,但无论哪种方式都有意义。

随着注解功能的增强,特别是Servlet 3.0规范的提出,可以将Web容器从web.xml的部署中分离出来,从而可以完全基于注解开发Web容器。 对于 Spring 3.x 和 Spring 4.x 版本的注解功能越来越强大,对 XML 的依赖越来越少。 在 4.x 版本之后,甚至可以与 XML 完全分离。 因此,在Spring中使用注解开发占据了主流地位。 同时,Pivotal 团队在原有 Spring 的基础上,主要通过注解来继续简化 Spring 框架的开发。 他们基于 Spring 框架开发了 Spring Boot,因此 Spring Boot 并没有取代 Spring 框架,而是让 Spring 框架变得更简单。 快速使用。  Pivotal 团队在 2014 年发布了 Spring Boot 1.0 版本,该版本使用特定的方式进行配置,让开发者不再需要定义样板配置。  2018年3月,Spring Boot推出2.0.0 GA版本,基于Spring 5引入其最新特性,可有效支持Java 9的开发。Spring Boot致力于成为蓬勃发展的快速应用的行业领导者 Java EE在企业互联网中的强势地位,也是近年来Java开发中最令人惊喜的项目之一。

  随着近年来微服务的普及,越来越多的企业需要快速发展。 除了基于注解的开发,Spring Boot还有其他的绑定,比如绑定服务端,默认使用Spring。 最大配置,因此开发人员可以尽快开发代码、发布和测试他们的项目。 这满足了当今微服务快速开发、测试和部署的需求,因此越来越多的公司选择 Spring Boot 作为开发选项,这使得 Spring Boot 更加繁荣。 因此重点介绍了这个令人兴奋的开发工具,称为 Spring Boot。

Springboot的优点

谈到Spring Boot,就让我们先来了解它的优点。依据官方的文档,Spring Boot的优点如下:•创建独立的Spring应用程序;

•嵌入的Tomcat、Jetty或者Undertow,无须部署WAR文件;

•允许通过Maven来根据需要获取starter;

•尽可能地自动配置Spring;

•提供生产就绪型功能,如指标、健康检查和外部配置;

•绝对没有代码生成,对XML没有要求配置。

这个描述告诉我们,首先,Spring Boot 是基于 Spring 框架构建的应用程序,其次,它会嵌入到 Tomcat、Jetty 或 Undertow 等服务器中,并且不需要传统的 WAR 文件进行部署 ,也就是说构建Spring Boot项目不需要Tomcat等传统服务器,需要单独下载; 同时,提供了依赖 Maven(或 Grandle)的启动器。 这些启动器可以直接获取开发所需的相关包。 通过这些 starter 项目,您可以以 Java Application 的形式运行 Spring Boot 项目。 无需其他服务器配置; 配置方面,Spring Boot 提供了 Spring 框架最大的自动配置,大量的自动配置用于最小化开发者对 Spring 的配置; 此外,它还提供了一些监控、自动检测功能和外部配置,并且也没有额外的代码和 XML 配置要求。

约定优于配置是 Spring Boot 的主导思想。 对于 Spring Boot,大多数情况下都有默认配置。 您甚至可以在没有任何定义的情况下使用 Spring 框架。 如果需要自定义,只需要在配置文件中配置一些属性,非常方便。 对于部署这些项目所需的功能,Spring Boot 提供了 starter 依赖项。 比如 spring-boot-starter-web 捆绑了 Spring MVC 依赖的包,spring-boot-starter-tomcat 捆绑了嵌入式的 Tomcat,这样就可以让开发者尽快搭建开发环境,开发和开发 快速部署。 这就是 Spring Boot 的特点。 也许你作为一个传统的开发者,还没有理解它的含义,但没关系。 为了展示 Spring Boot 的特点,下一节将分别展示传统的 Spring MVC 项目和简单的 Spring Boot 入门示例,并进行比较。

传统Spring MVC和Spring Boot的对比

在传统的 Spring MVC 项目开发中,开发一个简单的 Spring MVC 项目,需要配置 DispatcherServlet 和 Spring IoC 容器。 可以选择使用web.xml的配置来实现,当然如果使用的是Servlet 3.1规范,也可以继承Spring MVC提供的AbstractAnnotationConfigDispatcherServletInitializer来配置Spring MVC项目。 这里是一个可以运行的代码示例,即使你不熟悉Spring MVC也没关系,这里只是为了说明开发的繁琐,后面会详细讨论Spring MVC的开发原理。 假设您已经将所需的 Spring 和 Spring MVC 相关的依赖项导入到项目中,您可以开始配置 DispatcherServlet。 例如,清单 1-1 通过继承 AbstractAnnotationConfigDispatcherServletInitializer 来配置 Spring MVC 的 DispatcherServlet。

代码清单1-1 配置Spring MVC

springboot简介_第1张图片

注意代码中加粗的地方。这里引入了一个Java配置文件—— WebConfig.java,它的主要作用是配置Spring MVC的核心类DispatcherServlet的上下文,如代码清单1-2所示

代码清单1-2 配置DispatcherServlet的上下文

springboot简介_第2张图片

 springboot简介_第3张图片

springboot简介_第4张图片

通过上面的代码,配置完成Spring MVC的开发环境后,才可以开发Spring MVC控制器Controller,这样就可以开发一个简单的控制器(Controller),如代码清单1-3所示。

代码清单1-3 开发Spring MVC控制器

springboot简介_第5张图片

这样就完成了一个传统Spring MVC的开发,但是你还需要第三方服务器,如Tomcat、WebLogic等服务器去部署你的工程。在启动服务器后,再打开浏览器,输入对应的URL,如项目名称为SpringMVC则输入http://localhost:8080/SpringMVC/test.do,就可以得到图1-1所示的页面。

从上面来看,传统的Spring MVC开发需要配置的内容还是比较多的,而且对设计人员要求较高。开发完成后,开发者还需要找到对应的服务器去运行,如Tomcat或者Jetty等,这样既要进行开发,又要进行配置和部署,工作量还是不少的。而使用Spring Boot开发后,你就会发现原来一切可以那么简单。不过在入门阶段暂时不需要讨论太多的细节问题,这是未来需要讨论的问题,所以这里只展示它是如何简单而已。首先我们在IDE中创建一个Maven工程,并把其名称定义为Chapter1,这样就可以看到一个Maven配置文件pom.xml,将其内容修改为如代码清单1-4所示。

springboot简介_第6张图片

springboot简介_第7张图片

从加粗的代码中可以看到Maven的配置文件引入了多个Spring Boot的starter,Spring Boot会根据Maven配置的starter去寻找对应的依赖,将对应的jar包加载到工程中,而且它还会把绑定的服务器也加载到工程中,这些都不需要你再进行处理。正如Spring Boot承诺的那样,绑定服务器,并且实现Spring的尽可能的配置,采用约定优于配置的原则。这里我们只需要开发一个类就可以运行Spring Boot的应用了,为此新建类——Chapter1Main,如代码清单1-5所示。

代码清单1-5 开发Spring Boot应用

springboot简介_第8张图片

好了,这个入门实例已经完结了。如果你没有接触过Spring Boot那么你会十分惊讶,这样就配置完成Spring MVC的内容了吗?我可以回答你:“是的,已经完成了,现在完全可以使用Java Application的形式去运行类Chapter1Main。”下面是Spring Boot的运行日志:

springboot简介_第9张图片

 springboot简介_第10张图片

从日志中可以看到,Tomcat已经启动,并且将我们开发的Chapter1Main作为Spring MVC的控制器加载进来了,也将对应的路径(/test)映射到开发的test方法上。因此,接下来就可以进行测试了。打开浏览器,在地址栏输入http://localhost:8080/test,可以看到如图1-2所示的结果。

springboot简介_第11张图片

它与传统的 Spring MVC 有很大不同吗? 从上面的对比可以看出,Spring Boot 允许直接开发,这是它的优势。 在传统上需要配置的地方,Spring Boot 做了约定,即你可以直接按照 Spring Boot 约定的方式开发和运行你的项目。 当你需要修改配置时,它也提供了一些快捷的配置约定,正如它所承诺的,尽可能配置好Spring项目并绑定对应的服务器,让开发者配置更少,开发项目更直接。 对于那些微服务,他们更喜欢能够快速搭建环境的项目,而 Spring Boot 提供了这种可能性。 同时,Spring Boot 也提供了监控功能。 随着云技术的到来,微服务成为市场火热,因此代表Java微服务时代的Spring Boot微服务开发时代已经到来。 结合Spring Cloud,可以轻松搭建分布式系统开发,满足大部分无法单独开发分布式架构的企业的需求。 需要,所以这绝对是一项令人兴奋的技术。 以下章节将带我们进入 Spring Boot 开发的森林。

你可能感兴趣的:(springbot2实战开发,java,spring,servlet)