springboot学习记录

Last updated on August 11, 2024 pm

.

一、入门

1、概述

1)搜索springboot.io查找使用手册(全英的我很难看懂……)

2)springboot提供了一种快速开发spring项目的方式(自动配置、起步依赖(Maven))

3)springboot项目构建时采用jar的打包方式

4)start.spring.io 在官网配置spring boot项目

5)sout——system.out.println

2、实现基本案例

搭建springboot工程,定义HelloController.hello()方法,返回指定内容。

1)创建Maven项目

2)导入SpringBoot起步依赖(创建项目时勾选SpringWeb和Thymeleaf依赖)

3)定义Controller

4)编写引导类(现在版本自动生成,是Springboot项目的入口)

5)启动测试

3、起步依赖原理

1)在spring-boot-starter-parent中定义了各种技术的版本信息,组合了一套最优搭配的技术版本。

2)在各种starter中,定义了完成该功能需要的坐标合集,其中大部分版本信息来自于父工程。

3)我们的忠诚继承parent,引入starter后,通过依赖传递,就可以简单方便获得需要的jar包,并且不会存在版本冲突等问题。

二、配置文件

spring boot是基于约定的,所以很多配置都有默认值,如果想用自己的配置替换默认值,就可以用application.properties或者application.yml(/yaml)进行配置。

1、两种配置文件

properties: server.port=8085(键=值)

yml/yaml: server: (换行缩进)

​ port: 8080

在同一级目录下的优先级:properties>yml>yaml

2、YAML文件是以数据为核心的,比xml更加简洁,相对于properties来说更容易看出配置属于哪个层级。

image-20240801145449469

1)大小写敏感、2)数值前必须有空格作为分隔符、3)缩进代表层级关系,不能使用Tab,只能使用空格,空格数不重要,只需要相同层级的元素左侧对齐即可。4)#表注释

image-20240801150220414

参数引用: ${key}

3、配置文件读取

三种方法

​ @value

​ Environment

​ @ConfigurationProperties:是我们配置文件的内容和对象做映射

(1)读取实例方法一(@value)

如果想要在/hello路径输出一个字符串,controller文件可以这么写:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package org.example.demoa;

#import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController //RESTful控制器,返回JSON数据
public class HelloController {

@RequestMapping("/hello")
public String hello() {
return "Hello Spring Boot!";
}
}

如果想要读取配置文件,可以将文件修改为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package org.example.demoa;

import org.springframework.web.bind.annotation.Value;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController //RESTful控制器,返回JSON数据
public class HelloController {
@Value("${name}")
private String name; //读取name的赋给字符串name
@Value("${person.name}")
private String name1;
@Value("${address[1]}") //读取数组的第一个值
private String name2;
@RequestMapping("/hello2")
public String hello() {
System.out.println(name); //输出name的值,在控制台可以看到输出
return "Hello Spring Boot!";
}

@RequestMapping("/hello")
public String hello() {
return "Hello Spring Boot!";
}
}
(2)读取配置方法二(Environment)
1
2
3
4
5
6
@Autowired
private Enviroment env; //注入env对象,不要弄错包

//以下内容是写在函数体内
System.out.println(env.getProperty("person.name"));

(3)读取配置文件方法三(@ConfigurationProperties)

注:yml文件如下

1
2
3
4
5
6
7
8
9
server:
port: 8085
name: abc
person:
name: Yaoyao
age: 21
address:
- beijing
- shanghai

1、第一步,新建一个person类,添加属性与yml对应。右键生成getter 和 setter,然后添加注解:@Component(让它被识别)和@ConfigurationProperties。此时如果生成一个Person对象叫person,再输出它的值,则输出的name值是abc,age读取不了因此输出默认值0.因此。导入@ConfigurationProperties时,要用这样的形式:

1
@ConfigurationProperties(prefix="person")

2、controller文件中注入一个Person对象,用@Autowired注解来注入。并打印。

1
2
3
4
@Autowired
private Person person;

System.out.println(person);

我们会发现打印出来的结果是org.example.demo.Person@347d42b6,这是因为默认情况下会打印出对象的类名和对象的哈希码。如果想要打印出对象的具体属性值,则需要在Person类中重写toString()方法。例如:

1
2
3
4
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}

此时打印出来的结果就变成了Person{name=’Yaoyao’, age=21}

3、读取数组

1)将address数组复制到person下,在Person里加入字符串数组private String[] address

并在Person里加入getter 和 setter,不需重写toString。

2)controller文件中输入person.getaddress,alt+enter键快捷生成常量。接着打印

1
2
3
4
String[] address = person.getAddress();
for(String s : address){
System.out.println(s);
}

控制台会打印出beijing和shanghai。

4、profile

我们在开发spring boot应用时,通常同一套程序会被安装到不同的环境,比如开发、测试、生产等。其中数据库地址、服务器端口等配置都不同,如果每次打包时都要修改配置文件则非常麻烦,profile就是用来进行动态配置切换的。

(1)profile配置——多profile文件方式

创建多个properties文件,分别命名为application-dev.properties(开发)、application-test.properties(测试)、application-pro.properties(生产)。如果分别在里面设置了端口号,这时候直接运行,会显示Tomcat仍旧运行在默认端口8080,因为没有配置文件被激活。如果想要激活某一个配置文件,可以在主配置文件中加入spring.profiles.active=dev;这时就激活了application-dev.properties

image-20240801175409410

(2)profile配置——yml多文档方式(更加简洁)
image-20240801214745825

(需要把刚刚的那些配置注释掉)(记得空格,不要把server写成sever。。服了,找半天错误)

(3)不依赖idea修改配置和激活工程

右边找到package选项将工程打包成jar文件

image-20240801181439994

找到文件位置打开终端,java -jar .\demo1-0.0.1-SNAPSHOT.jar运行。

如果想要在这里配置参数,java -jar .\demo1-0.0.1-SNAPSHOT.jar –spring.profiles.active=test

5、内外部配置文件加载顺序

1)内部

image-20240803140132561

其中我们用的在resources目录下的properties配置文件属于第四种

2)外部

可以通过命令行的方式来修改配置。

方法一:在运行jar包语句后面加上 –server.port=8053这样类似的配置语句

方法二:在运行jar包语句后面加上 –spring.config.location=/放置的外部配置文件的路径


springboot学习记录
http://example.com/2024/07/31/springboot学习记录/
Author
Yaodeer
Posted on
July 31, 2024
Licensed under