ITPub博客

首页 > 应用开发 > 数据库开发技术 > Spring Boot概述

Spring Boot概述

数据库开发技术 作者:hqvv8dlb 时间:2022-09-05 15:28:25 0 删除 编辑

问题:

J2EE笨重的开发、繁多的配置、低下的开发效率、复杂的部署流程、第三方技术集成难度大。 

Spring Boot简介

简化Spring应用开发的一个框架;

整个Spring技术栈的一个大整合;

J2EE开发的一站式解决方案;

解决:

“Spring全家桶”时代。(整个Spring技术栈的一个大整合)

Spring Boot   J2EE一站式解决方案

Spring Cloud   分布式整体解决方案

优点:

– 快速创建独立运行的Spring项目以及与主流框架集成

– 使用嵌入式的Servlet容器,应用无需打成WAR包

– starters自动依赖与版本控制

– 大量的自动配置,简化开发,也可修改默认值

– 无需配置XML,无代码生成,开箱即用

– 准生产环境的运行时应用监控

– 与云计算的天然集成

缺点:

入门容易,精通难 

搭建Spring Boot项目 

准备环境

–jdk1.8:Spring Boot 推荐jdk1.7及以上; java version "1.8.0_201"

–maven3.x:maven 3.3以上版本;Apache Maven 3.6.1

–IntelliJIDEA2017:IntelliJ IDEA 2019 x64、STS

–SpringBoot 2.3.4.RELEASE:2.3.4;(SNAPSHOT快照版还在开发中、RELEASE发布版稳定版本)

1.新建Spring Boot项目

使用IDEA创建项目模块

在Module窗口中,选择左侧菜单中的“Spring Initializr”,选择Module SDK为JDK1.8,再点击“Next”按钮

 

 点击next时可能会出现的问题

 解决方案:   Initialization failed for 'https://start.spring.io' Please check URL, network and proxy settings._流烟默的博客-CSDN博客

使用Maven进行项目构建,需要根据需求设置Maven坐标,设置项目的构建方式和打包方式,设置完成后单击“Next”按钮 

选择依赖的Spring Boot版本和组件。选择Spring Boot版本为2.1.5。除了选择版本之外,Spring Boot还提供了很多可供选择的组件,这里由于要搭建Web项目,选择与Web项目相关的组件。单击Next按钮

 

设置项目名称和项目的存储位置,但是“Finish”按钮,完成一个Spring Boot项目的构建操作

 

创建完成的Spring Boot项目的结构如图所示:

2.编写java代码

打开Spring Boot项目src/main/java目录,在此目录的包下创建controller包,并在该包中创建控制器类SayHelloController,如图:

 

3.启动并测试

现在可以启动项目进行测试了

 

项目启动完成后,打开浏览器,访问http://localhost:8080/sayHello   

 

Spring Boot项目的三个核心文件

Spring Boot的三个核心文件(pom、启动类、application.properties)非常重要,这三个文件是Spring Boot能健康运行的关键

1.pom文件

注意:

由于咱们在创建SpringBoot项目时,选择的是加入Web组件,所以pom文件<dependencies>中的第一个依赖是spring-boot-starter-web。在不选择添加任何组件的情况下,pom文件<dependencies>中的第一个组件则会是spring-boot-starter。

 2.启动类

 @SpringBootApplication:SpringBoot应用标注在某个类上说明这个类是SpringBoot的主配置类,

SpringBoot就应该运行这个类的main方法来启动SpringBoot应用;

@SpringBootApplication注解是一个组合注解,它是由多个注解组合而成的注解;按住Ctrl键,单击@SpringBootApplication注解,可进入源码

 

 @SpringBootConfiguration:SpringBoot的配置类;标注在某个类上,表示这是一个SpringBoot的配置类。

可替换Spring的applicationContext.xml配置文件,被注解的类内部可以包含有一个或多个被@Bean注解标注的方法,这些方法会被Spring的系统类扫描,并用于构建Bean定义,初始化Spring容器。

@EnableAutoConfiguration:开启自动配置功能;

以前我们需要配置的东西,Spring Boot帮我们自动配置;@EnableAutoConfiguration告诉SpringBoot开启自动配置功能;这样自动配置才能生效

@ComponentScan:扫描启动类同目录及子目录下的所有注解,使这些注解生效

3.application.properties / application.yml

spring-boot-starter-parent中可以识别一些特定名称的文件,其中application.properties文件是SpringBoot项目的配置文件,关于SpringBoot项目的大部分配置信息可以在此文件中进行编写。需要注意,此文件必须在项目的resources资源路径的根路径下。

 application.properties文件

application.properties文件是SpringBoot项目能自定识别的文件,而且SpringBoot的大部分配置信息可以在此文件中编写。

SpringBoot项目默认启动的端口号是8080。如何修改?

就是在application.properties文件中添加配置。server.port=8082

 

 启动项目时,观察日志信息如图;可以发现现在的端口号已经变成8082了,说明端口号修改成功了。

除了修改端口号之外,还可以在application.properties文件中修改项目的访问路径和一些与日志相关的简单配置。

 

application.yml文件

在Spring Boot项目中,除了使用application.properties文件进行配置以外,还可以使用application.yml文件。

application.yml属于YAML类型的文件,可以更直观地配置项目信息。如图:

 YAML 是 "YAML Ain't a Markup Language"(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。

以前的配置文件;大多都使用的是 xxxx.xml文件;

YAML:以数据为中心,比json、xml等更适合做配置文件;

YAML:配置例子

 XML:

YAML语法 

– 使用缩进表示层级关系

– 缩进时不允许使用Tab键,只允许使用空格。

– 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

– 大小写敏感

 

Spring Boot的Web项目的启动方式

Web项目一般需要部署到Web容器中运行,Spring Boot项目也不例外。但是上述的案例启动并没有进行部署,直接通过运行启动类就将项目启动了。原因是:Spring Boot项目自动完成了部署,部署到了Tomcat中。

 

 

Spring Boot项目中会内置Web容器,默认的内置Web容器是Tomcat,当然也可以通过修改pom.xml文件来替换它的内置Web容器。

Spring Boot支持3中内置容器:Tomcat、Jetty和Undertow。

下面以Jetty为例,如何将默认的内置容器Tomcat修改为Jetty

第一步:修改pom.xml文件,添加如下的配置,此配置的作用是禁用当前的Tomcat容器

 第二步:添加与Web容器Jetty相关的依赖

 第三步:启动项目查看启动日志

 

 如何将默认的内置容器Tomcat修改为Undertow

 

SpringBoot项目除了使用内置的Web容器启动外,还有其他多种启动方式: 

第一种:在本地Web容器中启动

通过Maven将项目打包成war文件,将war文件拷贝至本地Web容器中部署运行

1.首先打开pom文件,将原有的jar(默认为jar)修改为war

 

2.然后将启动类继承SpringBootServletInitializer,重写configure方法

 

 3.然后去运行【package】进行打包

 4.然后把target目录下的war包放到tomcat的webapps目录下,启动tomcat,即可自动解压部署。最后在浏览器中输入http://localhost:[端口号]/[打包项目名]/

第二种:使用Maven启动项目

进入项目根路径,执行 mvn spring-boot:run 命令

使用命令行的形式/DOS窗口

 使用IEDA的Terminal

 

 第三种:使用Java命令启动项目

通过Maven将项目打包成jar文件,进入jar文件所在目录,使用 java -jar 命令运行jar文件

java -jar 生成jar的文件名.jar

使用命令行的形式/DOS窗口

 

 使用IEDA的Terminal

 

Maven的多模块项目 

 

问题:复杂、庞大的企业级项目,开发和部署过程存在多种问题

结构不够清晰,开发人员不易定位自己负责的模块

项目庞大导致启动费时

部署时无法按模块需要分配资源,造成资源的浪费

解决方案:Maven提出多模块项目的方案

将一个大项目拆分成多个小的模块项目

拆分后的模块项目任务明确,耦合度低,方便管理和维护

演示案例

第一步:创建Maven父模块

1.左侧面板选择maven(不要选择Create from archetype选项),如下图,点击Next即可

2.依次补全如下信息,点击Next

3.输入项目名字。如ch02_parent,我们主要是在这个项目下创建我们的子模块

 

 4.这样我们就创建好了一个普通项目,因为该项目是作为一个Parent project存在的,不需要编写任何代码,可以直接删除src文件夹

 第二步:创建子模块,通常按职责划分子模块

beans:存放实体类

common:存放工具类、枚举类等项目中的核心类

dao:存放数据访问层代码

service:存放业务层代码

controller:存放控制器层代码

1.在父模块上右键如下图操作,创建一个模块,该模块即为子模块

 

 2.同样不选择Create from archetype选项,因为是普通模块,Next

 3.groupId和version继承自Parent project,这里只用ArtifactId,Next

 

 4.填写模块名称

 5.创建完成后结构如下图

 6.按照同样的方式创建,依次创建common、dao、service模块项目

7.创建controller模块的方式有所区别

      7.1-使用maven-archetype-webapp创建一个Web项目

      7.2-groupId和version继承自Parent project,这里只用ArtifactId,Next

       7.3-设置maven项目的属性

     7.4-填写模块名称

第三步:配置模块之间的依赖

Maven的依赖有两个特点:继承和传递

继承:即当B项目依赖A项目时,B项目可继承A项目引入的全部依赖。除了这种情形外,在多模块项目中,子模块和父模块之间也存在继承关系,这类似于java中的继承关系,即子模块会继承父项目中的全部依赖。

传递:即当B项目依赖A项目,C项目依赖B项目时,C项目除了可以继承B项目引入的依赖之外,还会继承A项目引入的依赖。

 

 在多模块项目中,子模块继承父项目,所以可以在父项目中统一管理通用的依赖,比如Log4j、Junit这种每个项目都会用到的依赖。又由于Maven的依赖是传递的,所以子模块之间可以直接线性依赖,即controller依赖service,service依赖dao,dao依赖common,common依赖beans,这样controller中需要调用beans中的实体类时,也可以顺利调用。模块依赖关系如图:

 问题:

对于只是部分子模块会用到的依赖,不会放到父项目中

而由子模块分别引入某个依赖,可能产生版本不一致的问题

解决方案:

在父项目的pom文件中使用<dependencyManagement>标签管理依赖的版本号

 

 

 在父项目中添加了上面的示例代码后。

子模块中引入commons-logging依赖不需要指定版本号,版本号都是1.1.1。

子模块不需要commons-logging依赖的,则不会引入commons-logging依赖。这样就避免了版本冲突的问题。

 

 

此时,如果对父项目进行Maven的操作,子模块也会进行同样的操作。即当对父项目打包时,所有的子项目都会打包。这种通过父项目来操作子项目进行Maven操作的情形,就叫聚合。

注意:使用聚合时,父项目的pom文件中packaging都是pom。

使用Spring Initializr创建的Spring Boot项目也是Maven项目;可以使用Spring Initializr创建多模块项目,此时的每个模块都是Spring Boot项目\

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

原文作者:Qinꦿ.๓;如有侵权,请联系管理员删除。

下一篇: 微内核架构
请登录后发表评论 登录
全部评论

注册时间:2019-06-05

  • 博文量
    18
  • 访问量
    2585