什么是SpringBoot ?

官方介绍

SpringBoot 开发流程

配置环境 -> Spring Initializr -> 配置参数可选->业务开发->自动构建->自动部署->运维监控

  • 极低的学习成本
  • 可独立运行的Spring项目
  • 习惯优于配置,极大的提高了开发效率
  • 极简的组件依赖,自动发现与自动装配
  • 提供运行时的应用监控
  • 与分布式架构和云计算的天然集成

项目准备

Spring Boot 要求必须 JDK 8 以上的版本
Spring Boot目录结构

/src/main 项目根目录
/java java源代码目录
/resources 资源目录
/resources/static 静态资源目录
/resources/templates 表示层页面目录 html css….
/resources/application.properties Spring Boot 配置文件
/test 测试文件目录

通过maven创建Spring Boot项目

目录创建:
image.png

引入Springboot 依赖:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.prim</groupId>
  7. <artifactId>t_spring_boot</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <parent>
  10. <groupId>org.springframework.boot</groupId>
  11. <artifactId>spring-boot-starter-parent</artifactId>
  12. <version>2.0.1.RELEASE</version>
  13. </parent>
  14. <dependencies>
  15. <dependency>
  16. <groupId>org.springframework.boot</groupId>
  17. <artifactId>spring-boot-starter-web</artifactId>
  18. </dependency>
  19. </dependencies>
  20. <build>
  21. <plugins>
  22. <plugin>
  23. <groupId>org.springframework.boot</groupId>
  24. <artifactId>spring-boot-maven-plugin</artifactId>
  25. </plugin>
  26. </plugins>
  27. </build>
  28. </project>

启动SpringBoot

/**
 * @SpringBootApplication 说明这是一个Spring boot应用的入口类
 */
@SpringBootApplication
public class MySpringBootApplication {
    public static void main(String[] args) {
        //启动SpringBoot应用
        SpringApplication.run(MySpringBootApplication.class);
    }
}

利用maven创建工程是很麻烦的,可以使用Spring Initializr 构建Spring Boot应用

Spring Boot 入口类

  • 入口类名通常以*Application结尾
  • 入口类上增加@SpringBootApplication注解
  • 利用SpringApplication.run()方法启动应用

SpringBoot 启动流程
加载配置文件( application.properties) -> 自动装配 (web jpa(Hibernate) logging test) -> 加载组件(@Service @Controller @Component @Entity @Repository) -> 应用初始化 (启动tomcat log 连接池 数据池等等…)

SpringBoot配置

SpringBoot 常用配置

配置名称 默认值 描述
server.port 8080 端口号
server.servlet.context-path / 设置应用上下文
logging.file 日志文件输出路径
debug false 开启/关闭调试模式
logging.leve info 最低日志输出级别
spring.datasource.* 与数据库相关的设置

Spring Boot 支持两种配置文件

  • 属性文件:application.properties
  • YAML格式:application.yml

YAML是一种简洁的非标记语言.YAML以数据为中心,使用空白、缩进 分行组织数据,从而使得表示更加简洁易读

YAML语法格式:

  • 标准格式:key:(空格)value
  • 使用空格代表层级关系,以“:”结束
debug: true
logging:
  level:
    root: info
  file: /Users/prim/java/java-workspace/Awesome-Java-Notebook.log

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/oa
    username: root
    password: root

mall:
  config:
    name: 爱美商城
    description: 这是一家化妆品特卖网站
    hot-sales: 20
    show-advert: true

Spring Boot 自定义配置项

Spring Boot允许我们自定义应用配置项,在程序运行时允许动态加载,这为程序提供了良好的可维护性. 在实际项目开发中,我们通常将项目的自定义信息放在配置文件中.

package com.prim.t_initalizr_spring_boot.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Controller
public class MyController {
    //获取配置文件中的值 使用@valuezhujie
    @Value("${mall.config.name}")
    private String name;
    @Value("${mall.config.description}")
    private String description;
    @Value("${mall.config.hot-sales}")
    private Integer hotSales;
    @Value("${mall.config.show-advert}")
    private Boolean showAdvert;

    @RequestMapping("/out")
    @ResponseBody
    public String test() {
        return "success";
    }

    @RequestMapping("/info")
    @ResponseBody
    public String info() {
        return String.format("name:%s,description:%s,hot-sales:%s,show-advert:%s",
                name, description, hotSales, showAdvert);

    }
}

name:爱美商城,description:这是一家化妆品特卖网站,hot-sales:20,show-advert:true

环境切换

Spring Boot 可针对不同的环境提供不同的Profile文件
Profile文件的默认命名格式为application-{env}.yml
使用spring.profiles.active选项来指定不同的profile.

application.yml 配置

spring:
  profiles:
    active: dev

application-dev.yml 开发环境

# 开发环境
debug: true
logging:
  level:
    root: info
  file: /Users/prim/java/java-workspace/Awesome-Java-Notebook.log

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/oa
    username: root
    password: root

mall:
  config:
    name: 爱美商城
    description: 这是一家化妆品特卖网站
    hot-sales: 20
    show-advert: true
server:
  port: 8080

application-prd.yml 生产环境

debug: false
logging:
  level:
    root: info
  file: /Users/prim/java/java-workspace/Awesome-Java-Notebook.log # linux 的盘符

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/oa
    username: root
    password: root

mall:
  config:
    name: 线上-爱美商城
    description: 这是一家化妆品特卖网站
    hot-sales: 20
    show-advert: true

server:
  port: 8081

打包与运行

  • 利用maven package命令,生成可独立运行的jar包
  • 利用java -jar xxx.jar 命令启动Spring Boot应用
  • jar包可自动加载同目录的application配置文件

image.png

image.png

image.png

如何改变开发环境呢? 将配置文件放到和jar的同级目录下 jar会自动加载同级目录的配置文件,这样就可以灵活的切换环境了,只需要改application.yml中的环境配置即可

image.png