Spring Boot学习

Spring Boot

  • 一级目录
    • 二级目录
      • 三级目录
  • 一、Spring Boot入门
    • 1.1、第一个项目
    • 1.2、Spring Boot配置文件
    • 1.3、Spring Boot项目监控
      • 1.3.1、什么是Actuator?
      • 1.3.2、怎么Actuator
      • 1.3.3、监控终端
    • 1.4、创建一个war工程
    • 1.5、idea下的小技巧
  • 二、使用Spring Boot
    • 2.1、单元测试
    • 2.2、异常处理
    • 2.3、代码中读取配置
    • 2.4、环境选择
    • 2.5JSP页面的使用
    • 2.6与Mybatis整合

一级目录

二级目录

三级目录

一、Spring Boot入门

1.1、第一个项目

1、创建一个String boot项目是jar工程

  • 在idea中选择String Initializr来创建项目;

  • next后命名,然后java version选着8(老师选的是8,默认的是12);

  • next后选择web,Spring web,创建web项目;

  • 导入Spring web的一个依赖;

<dependency>  
    <groupId>org.springframework.boot </groupId>    
    <artifactId>spring-boot-starter-web</artifactId></dependency>

启动日志

Starting Springbootdemo1Application using Java 1.8.0_271 on DESKTOP-VKCAOHO with PID 17332 (F:\xiaomuzuoye\springbootdemo1\target\classes started by 沙鸥杰 in F:\xiaomuzuoye\springbootdemo1)
No active profile set, falling back to default profiles: default

Tomcat initialized with port(s): 8080 (http)(内置的tomcat已经初始化,端口号为8080)

Starting service [Tomcat](启动tomcat服务)

Starting Servlet engine: [Apache Tomcat/9.0.43](启动tomcat服务9.0.43)

Initializing Spring embedded WebApplicationContext(初始化内置的WebApplicationContext)

Root WebApplicationContext: initialization completed in 850 ms(初始化完成用的时间)

Initializing ExecutorService ‘applicationTaskExecutor’

Tomcat started on port(s): 8080 (http) with context path ‘’(端口号是8080,项目路径为空);

Started Springbootdemso1Application in 1.889 seconds (JVM running for 4.802)(启动时间)

2、项目的运行

两种运行方式

  • 在idea中运行
  • 打jar包运行;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6rGRgBud-1615997469042)(F:\Study\图库\Spring boot\1.png)]

3、项目结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yIFKFhUJ-1615997469054)(F:\Study\图库\Spring boot\2.png)]

.mvn——maven的包装器,用于完成不同版本mavn的切换

.src——项目源码,我们要写的代码都在这里;

​ – main

​ – resources

​ – static ---------- tymeleaf文件所需要用到的像.css、.js、.jpg等静态资源存放目录

​ – templates --------- Spring Boot对于前端页面,建议使用tymeleaf模板引擎,该文件的扩展名为.html

target——maven对项目的构建所生成地内容;

gitignore——将当前工程push到git远程库时,并不是所有文件都需要上传的,不需要上传的 文件,就将其文件名写入到该文件中,那么,这些文件将不会被git管理

**xxx.iml —— 这是idea工程生成的文件,是idea需要的工程信息 **

**HELP.md ——这是一个markdown文件,是一个当前工程的帮助文档,需要开发人员来编写 **

mvnw , mvnw.cmd——都是maven包装器相关的内容

4、pom.xml文件详解

  • first-0.0.1-SNAPSHOT.jar.original 文件是原来的maven打包的结果

  • first-0.0.1-SNAPSHOT.jar 文件是spring boot进行repackage后的结果

  • spring-boot-starter-web等依赖的版本是继承自父pom文件的

5、在线创建Spring Boot工程

在浏览器中打开https://start.spring.io站点,在其中创建Spring Boot工程。

1.2、Spring Boot配置文件

Spring boot配置文件根据文件地扩展名地不同,有两种类型

properties文件——该文件名必须是application.properties;

  • server.port=9000(指定当前应用地端口号)
  • server.servlet.context-path=/soj(指定当前应用的上下路径)

yml文件

YAML是"YAML Ain’t a Markup Language"(YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。

注意:

(1)yaml,通常情况下缩写为yml。Spring Boot 配置文件名称必须是application.yml或application.yaml。

(2)在yml文件中空格是有效字符,不能多写也不能少写。

server:
  port: 8888               # 指定当前应用的端口号
  servlet:
    context-path: /wang    # 指定当前应用的上下文路径

在Spring Boot中我们以后常用的是yml文件

1.3、Spring Boot项目监控

1.3.1、什么是Actuator?

  1. Actuator是String Boot提供的一个可插拔模块,用于对工程进行监控;
  2. 其可通过不同的监控终端实现不同的监控功能;
  3. Actuator可以部署在每一个Spring Boot工程中,对当前工程进行监控;

1.3.2、怎么Actuator

  1. 导入actuator依赖

     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-actuator</artifactId>
     </dependency>
    
  2. 在浏览器输入如下地址:

    http://localhost:8888/wang/actuator/hello

  3. 为actuator指定专门的端口、上下文路径与basePath

    在主配置文件中写入如下配置:

    # 修改actuator的相关配置
    management:
      server:
        port: 9999             //指定actuator的端口号
        servlet:
          context-path: /aynu     // 指定actuator的上下文路径
      endpoints:
        web:
          base-path: /java       //指定监控终端的基本路径,用于替换默认的/actuator路径
    
    

    此时在浏览器地址栏中需要输入如下地址才可看到监控结果

    http://localhost:9999/aynu/java/health

  4. 开户其它监控终端

默认情况下,actuator仅开启了两个监控终端:health和info。

其他监控终端需要专门开启:在主配置文件中添加如下配置:

management:
 endpoints:
    web:
      base-path: /java       // 指定监控终端的基本路径,用于替换默认的/actuator路径
      exposure:
        include: "*"        //开启所有actuator的监控终端
        include: ["env", "health"] //开启指定终端;
//另一种写法
        include:
          - env
          - health    //也是开启指定终端;
//
        exclude: ["info", "env"]    // 排除(关闭)指定的监控终端
              

5、关闭指定监控终端:

exclude: [“info”, “env”] // 排除指定的监控终端

management:
 endpoints:
    web:
      base-path: /java       // 指定监控终端的基本路径,用于替换默认的/actuator路径
      /*exposure:
        include: "*"         // 开启所有actuator的监控终端
        # include: ["env", "health"] //k开启指定终端;
        #include:
        #  - env
        #  - health*/
          
          
        exclude: ["info", "env"]    // 排除指定的监控终端
***************
    
  /*  endpoint:
       stutdown:
         enabled:true               //启用shutdown控制终端;*/

1.3.3、监控终端

1、health:

用于显示当前应用的状态:UP与Down;

2、info

用于显示当前应用的相关信息,这些信息是配置在主配置文件中的

例如:

//为当前应用致电给一些基本信息
info:  //关键字,不能改变,但下面的所有内容都是自定义的;
   suto:
     name:张三
     class:18软件工程java4班
   school:
     name:安阳师范学院,软件学院
     address:河南省安阳市文明大道校区
   project:
     group-id:@project.groupId@  

3、shutdown

用于关闭当前应用。其使用需要首先启用该监控终端,然后再提交POST请求。

在主配置文件中启用该终端。

 
management:
   endpoint:
       stutdown:
         enabled:true               //启用shutdown控制终端;

1.4、创建一个war工程

创建war工程,在Packaging选择war,其他不变;

war工程和jar工程很相似,在打包时运行包的方式不同,war需要在tomcat中运行,而jar包可以在dos命令行里运行;

1.5、idea下的小技巧

1、修改工程名称

通过复制工程来完成

2、一个应用启动多个进程
Spring Boot学习_第1张图片
Spring Boot学习_第2张图片

二、使用Spring Boot

2.1、单元测试

应用场景

当我们需要对某些业务代码进行单独时使用。而这些测试业务代码不方便在整个工程运行时进行,此时就需要使用单元测试了

2.2、异常处理

状态码:

4xx:一般表示用户提交的请求有问题(找不到)

5xx:一般表示服务端代码有问题

一般情况下系统出现404、500等异常状态时,页面会给出默认的提示信息。而这些提示信息一般都是英文的,用户界面不友好。

我们这里要做的就是,将那些不友好的默认页面替换为我们自己定义的页面。

实现步骤:

src/main/resources目录下创建新的目录public/error。注意目录名必须是这个名称。

然后在其定义html文件。要处理哪种状态码的异常,该文件名就以状态码命名。例如,

404.html,500.html

2.3、代码中读取配置

*读取主配置文件中的属性

使用**@Value("${属性名}")**可以将本配置文件中的指定属性读取并注入给相应的成员变量。

例如:

Spring Boot学习_第3张图片

*读取自定义配置文件的属性:

Spring Boot中规定用户自定义配置文件只能是properties属性文件,不能是yml文件。文件名可以任意。

需要在读取自定义配置文件的类上添加@PropertySource注解。若要读取的属性值中包含中文,则需要给注解添加encoding属性。

读取指定文件:value可以省略
在这里插入图片描述
导入过程:

在这里插入图片描述
在这里插入图片描述

properties属性文件的文件内容:

在这里插入图片描述

*将多个配置属性以一个对象的形式读取

只有当这些属性有共同的前辍时,才可这样读取。

实现步骤:

首先要定义一个类,该类就是将来要一次性读取的对象。该类的属性名必须与配置文件中的属性名相同。然后再在类上添加以下注解。然后在需要一次性读取的类中直接注入该类实例即可。

过程

Spring Boot学习_第4张图片
lombok依赖
在这里插入图片描述
properties属性文件的文件内容:

Spring Boot学习_第5张图片
在这里插入图片描述
在这里插入图片描述


*以数组或List的形式读取配置信息
配置信息例如:
在这里插入图片描述
Spring Boot学习_第6张图片
Spring Boot学习_第7张图片
Spring Boot学习_第8张图片
*以数组或List的形式读取元素为对象的配置信息
配置信息例如:
Spring Boot学习_第9张图片
首先先创建一个City类来获取城市属性
Spring Boot学习_第10张图片
在创建一个County类来获取City类的对象
Spring Boot学习_第11张图片
自动注入数据
在这里插入图片描述
前台读取
在这里插入图片描述

2.4、环境选择

**什么是环境选择 **

1、相同代码运行在不同环境

在项目开发过程中,一般情况下一套代码会被运行在多种不同的环境,

例如,开发环境、测试环境、上线环境等。这些环境中涉及到的DBMS等服务器地址及相关配置是不同的。这种切换、改变配置以运行在不同的环境中的需求,不能简单的通过每次切换,每次修改配置文件来完成。需要由系统能够自动完成。

2、不同环境中所使用的业务接口实现类是不同的

例如,要开发电商平台,其中有关支付模块的实现,在开发过程中,支付可能仅仅是一个本地的小Demo,而在真正项目上线后,其是要调用银联给的接口的,即按照银联给出的规范来实现真正的线上支付。

多配置文件

**1、实现步骤 **

1)复制了工程

2)定义了接口,与两个实现类

3)定义了多种环境的环境配置文件

4)在spring boot主配置文件中指定了要选择的环境

5)在接口实现类上添加了@Profile注解,指定了要选择的环境

6)定义了处理器

2、在命令行如何进行环境选择

java -jar 05-multiconfigs-0.0.1-SNAPSHOT.jar --spring.profiles.active=produce

3、环境配置文件

环境配置文件的文件名,必须是如下格式:

application-{profile}.yml

这里的profile表示的是环境名称,是用户自己定义的。在主配置文件及接口实现类中要选择环境,使用的就是这个名称。

三、单配置文件实现

所有的环境配置均写入到spring boot的主配置文件中。

当然,环境选择仍是配置在主配置文件中的。

每种环境配置间均需要使用三个减号作为分隔符。

2.5JSP页面的使用

**一、在Spring Boot中使用JSP页面,需要完成以下步骤: **

1)需要在src/main下创建一个目录webapp

2)在idea中需要指定这个webapp目录为当前应用的web目录的根目录

​ File/Project Structure

Spring Boot学习_第12张图片

3)在webapp目录中创建jsp文件

4)在pom文件中导入JSP解析器jasper依赖

5)在pom文件的中添加资源指定配置。

二、配置逻辑视图

在spring mvc的处理器处理方法的返回值,默认使用的是物理视图(路径),我们也可以通过配置使用逻辑视图(名称)。

在application.yml文件中添加如下配置:

2.6与Mybatis整合

**一、在Idea下配置DBMS的GUI工具 **

**二、MyBatis与Spring Boot整合 **

1、添加依赖

  • mybatis与spring Boot整合依赖
  • mysql驱动依赖
  • Druid依赖

2、定义Service接口与实现类

 注意Service实现类上有个@Service注解,表示当前类的生命同期交给Spring容器来管理。 

3、定义Dao接口

StudentDao {   insertStudent(Student student); }

注意,该Dao接口上有一个注解@Mapper,表示当前Dao接口的实现类是通过Mapper动态代理生成的。

4、修改处理器

@Controller`StudentController {     StudentService ;    ( )   String registerHandler(Student student, Model model) {     model.addAttribute( , student.getName());     model.addAttribute( , student.getAge());     model.addAttribute( , student);        .saveStudent(student);          ;   } }`

5、定义Mapper映射文件

该映射文件需要定义在Dao接口所在的包,且文件名与Dao接口的简单类名相同,是一个xml文件。

6、指定java目录为资源目录

在pom文件的下添加如下配置。

该配置的目的,就本例而言,就是为了能够让系统从src/main/java目录中搜索到StudentDao.xml文件。

7、在主配置文件中注册mybatis

主要需要注册以下内容:

  • 注册映射文件
  • 注册实体类所在的包
  • 注册数据源

你可能感兴趣的:(spring,boot)