SpringBoot概述
SpringBoot主要是简化spring应用开发
主要功能:
- 自动配置
- 起步依赖
- 辅助功能:如内嵌服务器
SpringBoot并不是对Spring功能上的增强,而是提供一种快速使用Spring的方式。
Spring的缺点
- 配置繁琐:如xml配置
- 依赖繁琐:如导坐标
SpringBoot快速入门
主要步骤:
1.导入依赖
<groupId>top.murongkang</groupId>
<artifactId>springboot-helloworld</artifactId>
<version>1.0-SNAPSHOT</version>
<!--springboot工程需要继承的父工程-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
</parent>
<!--web开发的起步依赖-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
2.编写controller
package top.murongkang.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author murongkang
* @date 2020-07-12 22:08
*/
@RestController
public class HelloController {
@RequestMapping("/world")
public String helloWorld(){
return "helloWrold springboot!";
}
}
3.创建启动引导类
package top.murongkang;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/*Springboot 引导类,是项目的入口*/
@SpringBootApplication
public class HelloApplication {
public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
}
}
4.测试访问
SpringBoot配置文件
有两种形式:.properties和yml
那么这三种配置文件是有优先级的。
.properties>.yml>ymal
如果三种文件中同时配置了相同的属性,则优先级低的属性会被覆盖。
读取 配置文件的3种方式
1.使用@Value获取单个值方便,如果多个就不是很方便了。
2.使用Environment对象,注入即可,获取所有配置值,适合用在值比较多的时候
3.使用@ConfigurationProperties(prefix = “persion”)注解,把配置文件值映射到实体对象中的属性。也就是配置文件和实体对象绑定。
代码如下:
pom.xml文件
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.itheima</groupId>
<artifactId>springboot-init</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-init</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<!-- <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>-->
</project>
Controller
package com.itheima.springbootinit.controller;
import org.omg.CORBA.Environment;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/*1.使用@Value获取单个值方便,如果多个就不是很方便了。
* 2.使用Environment对象,注入即可,获取所有配置值,适合用在值比较多的时候
* 3.使用@ConfigurationProperties(prefix = "persion")注解,把配置文件值映射到实体对象中的属性
* 也就是配置文件和实体对象绑定*/
/**
* @author murongkang
* @date 2020-07-13 22:27
*/
@RestController
public class HelloWorldController {
/*
@Value("${name}") //注意:这个name必须和配置文件中的键名(name)一样。
private String name; //这个name和配置中的键name无关
@Value("${persion.name}")
private String name2;
*/
/* @RequestMapping("/hello2")
public String helloWorld2(){
System.out.println(name); //控制台输出abc,可见可以获取配置文件name的值
return "SpringBoot222";
}
*/
/* @Value("${address[0]}") //数组写法
private String address;
@Value("${address[1]}")
private String address1;*/
@Autowired
private Persion persion;
@RequestMapping("/hello4")
public String hello(){
System.out.println(persion);
return "persion" ;
}
@RequestMapping("/hello5")
public String hellok(){
for (String sex : persion.getSex()) {
System.out.println(sex);
}
return "persion" ;
}
/* @RequestMapping("/hello3")
public String helloWorld3(){
System.out.println(name2); //控制台输出abc,可见可以获取配置文件name的值
return name2;
}*/
@RequestMapping("/hello")
public String helloWorld(){
return "SpringBoot2";
}
}
Persion实体对象:
package com.itheima.springbootinit.controller;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Arrays;
/**
* @author murongkang
* @date 2020-07-21 22:44
*/
@Component //被Springboot识别
@ConfigurationProperties(prefix = "persion") //指定配置文件前缀
public class Persion {
private String name;
private String address;
private int age;
private String[] sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getAge() {
return age;
}
public String[] getSex() {
return sex;
}
public void setSex(String[] sex) {
this.sex = sex;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Persion{" +
"name='" + name + '\'' +
", address='" + address + '\'' +
", age=" + age +
", sex=" + Arrays.toString(sex) +
'}';
}
}
applision.yml配置文件:
server:
port: 8082
name: abc
persion:
name: mu
age: 23
address: beijing
sex:
- 男
- 女
#name: murong
# yaml:数据格式写法3种
# 1.对象(map):键值对的集合
persion1:
name: zhangsan
# 行内写法,注意空格
persion2: {name: zhangsan}
# 2.数组 :每组按次序排列的值
address:
- beijing
- shanghai
#行内写法
address1: [beijing,shanghai]
#3.纯量:单个的、不可在分的值,比如 20,true等像是常量
msg: 'hello \n world' #单引忽略转义字符 ,也就是直接原样输出\n
msg1: "hello \n world" #双引识别转义字符,输出两行。
#参数引用
age: 21
persion3:
age: ${age} #引用上面定义的age值
SpringBoot多种配置环境
多profire文件配置方式:
yml配置方式:
对于使用yml多文档配置方式,可能你会说,以后不是还是需要改配置文件么。那么我们可以采用另一种方式来切换配置。通过IDEA工具如下:配置虚拟机参数,有两种。
后期,项目上线或测试可以通过命令行参数来改配置,好处就是不用改代码,就可以动态改配置环境
首先:项目打包,找到路径
*
Profile小结*
SpringBoot内部配置加载顺序
优先级高的配置文件先加载
外部配置加载顺序
https://blog.csdn.net/wu2374633583/article/details/80075198?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.channel_param