什么是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项目
目录创建:
引入Springboot 依赖:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.prim</groupId>
<artifactId>t_spring_boot</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</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配置文件
如何改变开发环境呢? 将配置文件放到和jar的同级目录下 jar会自动加载同级目录的配置文件,这样就可以灵活的切换环境了,只需要改application.yml中的环境配置即可