SpringBoot的基础配置

落落落sss 2024-08-23 12:03:04 阅读 84

目录

SpringBoot快速搭建web程序

第一步:导包

第二步:配置SpringBoot引导类

 第三步:编写controller类

第四步:在SpirngBoot引导类中启动项目

起步依赖

SpringBoot基础配置

配置文件格式

yaml语法规则

读取yml配置文件的方法

 第一种:使用@Value注入

第二种:封装全部数据到Environment对象(SpringBoot自己封装的)

第三种:自定义对象封装指定数据

多环境配置开发 -配置文件

第一种:使用yml文件

第二种:使用properties文件

 本地启动SpringBoot项目

可以发现启动的这个程序是pro环境,那如何在启动的时候切换环境呢?

也可以临时改端口号

​编辑 Maven的pom.xml文件中配置多环境

配置文件分类


SpringBoot快速搭建web程序

第一步:导包

<code><?xml version="1.0" encoding="UTF-8"?>code>

<project xmlns="http://maven.apache.org/POM/4.0.0"code>

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"code>

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">code>

<modelVersion>4.0.0</modelVersion>

<!-- 继承-->

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>2.3.10.RELEASE</version>

</parent>

<groupId>com.hhh</groupId>

<artifactId>spring_day8_springBoot</artifactId>

<version>1.0-SNAPSHOT</version>

<properties>

<maven.compiler.source>8</maven.compiler.source>

<maven.compiler.target>8</maven.compiler.target>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

</properties>

<dependencies>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

</dependencies>

</project>

这里首先要继承SpringBoot

<!-- 继承-->

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>2.3.10.RELEASE</version>

</parent>

 然后导入自己想要的功能的依赖,这里要创建web程序,就导入web功能的依赖包,版本号不用指定

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

第二步:配置SpringBoot引导类

<code>//SpringBoot引导类

@SpringBootApplication

public class Application {

public static void main(String[] args) {

SpringApplication.run(Application.class,args);

}

}

 第三步:编写controller类

@RestController

@RequestMapping("/books")

public class Book {

@RequestMapping("/save")

public String save(){

System.out.println("user save");

return "hello";

}

}

第四步:在SpirngBoot引导类中启动项目

启动成功

起步依赖

<code> <parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>2.3.10.RELEASE</version>

</parent>

starter:SpringBoot中常见项目名称,定义了当前项目使用的所有项目坐标,以达到减少依赖配置的目的

parent:所有SpringBoot项目要继承的项目,定义了若干个坐标版本号,以达到减少依赖冲突的目的 

SpringBoot基础配置

配置文件格式

 配置文件有三种格式分别为

application.propertiesapplication.ymlapplication.yaml 

它们的文件名都是application,这是SpringBoot默认的文件名,这三种文件的优先级依次降低

验证:在这三个配置文件种都配置端口号,看启动的web程序的端口号是哪个

 结果:

可见properties格式的配置文件优先级最高,然后到yml文件(可以把properties注释自己去比较看看),最后是yaml文件 

yaml语法规则

大小写敏感属性层级关系使用多行进行描述,每层结尾使用冒号(:)结束使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不可以使用tab键)属性值前面要要添加一个空格,即属性名和属性值之间间隔一个冒号一个空格#表示注释 

读取yml配置文件的方法

<code>people:

name: hhh

age: 19

hobby:

- sing

- dance

- rap

#数组的值前面要加一个-

 第一种:使用@Value注入

@RestController

@RequestMapping("/books")

public class Book {

@Value("${people.name}")

private String name;

@Value("${people.age}")

private Integer age;

@Value("${people.hoppy[1]}")//取数组索引为1的值

private String hobby;

@RequestMapping("/save")

public String save(){

//System.out.println("user save");

System.out.println("name:"+name);

System.out.println("age:"+age);

System.out.println("hobby:"+hobby);

return "hello";

}

}

 

 这里也许有人会好奇,明明都没有导入外部配置文件,是怎么读取里面的数据的?

其实SpringBoot已经帮我们把名字为appliction的配置文件都导入加载了,所以我们可以直接读配置文件里的属性值

第二种:封装全部数据到Environment对象(SpringBoot自己封装的)

 注意:是这个包下的Environment类对象

org.springframework.core.env.Environment;

<code>@RestController

@RequestMapping("/books")

public class Book {

@Value("${people.name}")

private String name;

@Value("${people.age}")

private Integer age;

@Value("${people.hobby[1]}")//取数组索引为1的值

private String hobby;

@Autowired

private Environment environment;

@RequestMapping("/save")

public String save(){

//System.out.println("user save");

System.out.println("name:"+name);

System.out.println("age:"+age);

System.out.println("hobby:"+hobby);

System.out.println("-----");

System.out.println("name:"+environment.getProperty("people.name"));

System.out.println("age:"+environment.getProperty("people.age"));

System.out.println("hobby:"+environment.getProperty("people.hobby[0]"));

return "hello";

}

}

第三种:自定义对象封装指定数据

<code>@Configuration//交给Spring管理

@ConfigurationProperties(prefix = "people")//与配置文件中的people属性进行映射绑定

public class People {

private String name;

private Integer age;

private String[] hobby;

@Override

public String toString() {

return "People{" +

"name='" + name + '\'' +code>

", age=" + age +

", hobby=" + Arrays.toString(hobby) +

'}';

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

public String[] getHobby() {

return hobby;

}

public void setHobby(String[] hobby) {

this.hobby = hobby;

}

}

 这个类中使用了两个注解

@Configuration-->把这个类交给Spring管理

@ConfigurationProperties(prefix = "people")-->与yml配置文件中的people属性进行映射绑定

<code>@RestController

@RequestMapping("/books")

public class Book {

@Value("${people.name}")

private String name;

@Value("${people.age}")

private Integer age;

@Value("${people.hobby[1]}")//取数组索引为1的值

private String hobby;

@Autowired

private Environment environment;

@Autowired//根据类型自动注入

private People people;

@RequestMapping("/save")

public String save(){

//System.out.println("user save");

System.out.println("name:"+name);

System.out.println("age:"+age);

System.out.println("hobby:"+hobby);

System.out.println("-----");

System.out.println("name:"+environment.getProperty("people.name"));

System.out.println("age:"+environment.getProperty("people.age"));

System.out.println("hobby:"+environment.getProperty("people.hobby[0]"));

System.out.println("----");

System.out.println(people);

return "hello";

}

}

结果:

多环境配置开发 -配置文件

第一种:使用yml文件

<code>spring:

profiles:

active: pro

---

spring:

profiles: dev

server:

port: 8081

---

spring:

profiles: test

server:

port: 8082

---

spring:

profiles: pro

server:

port: 8083

先写一个主环境

spring:

  profiles:

    active:

然后不同的开发环境之间使用 ---  三个杠间隔

之后相使用哪个环境直接在active属性赋值即可,如要使用pro环境,结果端口就要为8083

第二种:使用properties文件

先创建一个application.properties文件,定义主环境

<code>spring.profiles.active=

 再写两个properties定义多环境

使用test环境

结果端口号为8082 

 本地启动SpringBoot项目

使用插件进行jar打包

<code> <build>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

</plugin>

</plugins>

</build>

 然后先点clean,再点package

之后在target中看见jar包

打开jar包本地路径

启动

可以发现启动的这个程序是pro环境,那如何在启动的时候切换环境呢?

在启动命令后面加上

--spring.profiles.active=环境名

也可以临时改端口号

只要加上

--server.port=端口号

 Maven的pom.xml文件中配置多环境

<code> <profiles>

<!-- 开发环境-->

<profile>

<id>env_dev</id>

<properties>

<profile.active>dev</profile.active>

</properties>

</profile>

<!-- 测试环境-->

<profile>

<id>env_test</id>

<properties>

<profile.active>test</profile.active>

</properties>

<!-- 设置为默认环境-->

<activation>

<activeByDefault>true</activeByDefault>

</activation>

</profile>

<!-- 生产环境-->

<profile>

<id>env_pro</id>

<properties>

<profile.active>pro</profile.active>

</properties>

</profile>

</profiles>

yml文件使用pom.xml中的默认环境

spring:

profiles:

active: @profile.active@

#使用的是pom.xml中profile.active中的值

---

spring:

profiles: dev

server:

port: 8081

---

spring:

profiles: test

server:

port: 8082

---

spring:

profiles: pro

server:

port: 8083

结果:为test环境

但是我们可以发现这里yml使用pom.xml文件的属性值时使用的是@@占位符,我们也可以进行修改,进而使用默认的占位符${}

<code><build>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

</plugin>

<plugin>

<artifactId>maven-resources-plugin</artifactId>

<version>3.2.0</version>

<configuration>

<useDefaultDelimiters>true</useDefaultDelimiters>

</configuration>

</plugin>

</plugins>

</build>

 插件管理中加上

<plugin>

<artifactId>maven-resources-plugin</artifactId>

<version>3.2.0</version>

<configuration>

<useDefaultDelimiters>true</useDefaultDelimiters>

</configuration>

</plugin>

这样一来就可以使用默认的占位符了

配置文件分类

1级:与jar包同级目录的config目录里的yml文件--file:config/application.yml(优先级最高)

2级:与jar包同级目录的yml文件--file:application.yml

3级:resource里config包下的yml文件--classpath:config/application.yml

4级:resource里的yml文件--classpath:application.yml



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。