SpringBoot入门笔记第二篇 | Spring Boot核心配置于注解

admin 2022年3月17日02:38:50评论54 views字数 4245阅读14分9秒阅读模式

全局配置文件application.properties

每次新建项目时,都会生成一个全局配置文件(application.properties),它会被首次加载。通过全局配置文件我们可以修改默认端口或者默认虚拟路径等

比如我们新建项目后,默认是8080端口,无虚拟路径,如下图:

SpringBoot入门笔记第二篇 | Spring Boot核心配置于注解
image-20220309082559639

我们在全局文件中添加修改端口和路径的配置

//普通属性值的修改
server.port=8081

server.servlet.context-path=/chapter02

重新启动项目

SpringBoot入门笔记第二篇 | Spring Boot核心配置于注解
image-20220309082828911

对象类型

新建一个属性类

SpringBoot入门笔记第二篇 | Spring Boot核心配置于注解
image-20220309084415544
//对象类型修改
person.id=1
person.name=lxf
person.hobby=paly,read,sleep
person.family=father,mother
person.map.k1=v1
person.map.k2=v2
person.pet.type=dog
person.pet.name=kity

全局配置文件Application.yaml

YAML文件格式是Spring Boot支持的一种JSON超集文件格式。相较于传统的Pro pretties配置文件,YAML文件以数据为核心,是一种更为直观且容易被电脑识别的数据序列化格式。

Application.yaml工作原理和application.properties一样。

通过空格来判断是否是同一层级关系。

语法

key: (空格) value
# 当value值为普通数据类型的配置
server:
  port: 8082
  servlet:
    context-path: /lxflxf
    

当value值为数组或者单列集合,yaml配置文件如下:

#当value值为数组或者单列集合

hobby:
  - paly
  - read
  - sleep

#方式2
hobby:[paly,read,sleep]

#当值为map时
map:
  k1: v1
  k2: v2

#方式2
map: {k1: v1, k2: v2}

使用YAML文件对实体类对象进行属性配置,举例如下:

person:
  id: 2
  name: list
  hobby: [sing,read]
  family: [father,mother]
  map: {k1: v1, k2: v2}
  pet: {type: cat, name: tom}

配置文件属性值注入

使用@ConfigigurationProperties注入属性

对于系统默认的一些属性,会自动扫描配置文件并修改,而对象自定义的一些对象属性就需要进行注入才可以。这里需要了解到两个注释如下:

@Component   //生成当前类的实例对象存到IOC容器中
@ConfigurationProperties(prefix = "person")  //将配置文件中的前缀为person的每个属性的值映射到当前类中变量上
SpringBoot入门笔记第二篇 | Spring Boot核心配置于注解
image-20220312125516168

配置文件中对对象属性赋值如下

SpringBoot入门笔记第二篇 | Spring Boot核心配置于注解

最后通过测试类测试,注入成功

SpringBoot入门笔记第二篇 | Spring Boot核心配置于注解
image-20220312125904097

注意:使用@ConfigigurationProperties注解批量注入属性值时,要保证配置文件中的属性与对应实体类的属性保持一致,否则无法正确获取并注入属性值。

如果想要对某一个属性进行注入操作,可以使用@Value注解,不用写set、get方法也能完成注入。使用案例如下:

SpringBoot入门笔记第二篇 | Spring Boot核心配置于注解
image-20220313182130451

具体区别如下表:

SpringBoot入门笔记第二篇 | Spring Boot核心配置于注解
image-20220313191141507

@ConfigigurationProperties支持JSR303数据校验,需要添加如下注解

@Validated  //数据校验

比如要验证邮箱是否合法,就要@Email注解。然后在配置文件中为属性赋值进行测试。如果不符合email规则就会报错。

SpringBoot入门笔记第二篇 | Spring Boot核心配置于注解
image-20220313201735990

Spring Boot自定义配置

SpringBoot免除了项目中的大部分手动配置,几乎所有的配置都可以可以写在配置文件中,但是我们自定义的配置文件是Spring Boot是无法自动识别的,需要我们手动加载,这里呢,就需要用到如下注解了。

@Configuration   //制定当前类为配置类,可以使用Component代替
@PropertySource("classpath:test.properties"//制定自定义配置文件的位置和名称
@EnableConfigurationProperties(MyProperties.class) //开启配置类的属性注入功能
@ConfigurationProperties(prefix 
"test"//起个别名

这里需要注意一下,如果使用Component代替就不需要@EnableConfigurationProperties注解了。

这里新建一个配置文件test.properties,新建一个类,然后测试一下,发现新建的自定义配置文件被加载,值注入进去了。

SpringBoot入门笔记第二篇 | Spring Boot核心配置于注解
image-20220313204631799

Profile文件多环境配置

为什么需要多环境配置

在实际开发中,应用程序通常需要部署到不同的运行环境中,例如测试环境,开发环境等等,不用环境需要不同的环境配置,如果每次都要修改配置文件就会不方便,所以需要对项目设置多环境配置。

多环境配置文件格式

application-{profile}.properties           //{profile}对应具体的环境标识

首先先建三个配置文件,分别是生产环境,开发环境和测试环境。

配置文件名分别是:

application-prod.properties  //设置端口 server.port=8083
application-dev.properties   //设置端口 server.port=8086
application-test.properties   //设置端口 server.port=8087

命令行方式

首先先通过命令行的方式启动生产环境,生产环境设置的端口是8083,如下所示,其他两个同理。

java -jar chapter02-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
SpringBoot入门笔记第二篇 | Spring Boot核心配置于注解
image-20220315210850024

全局配置文件方式

在全局配置文件中通过spring.profiles.active来进行配置,如果想启动开发环境,直接在全局配置文件填写如下:

spring.profiles.active=dev
SpringBoot入门笔记第二篇 | Spring Boot核心配置于注解
image-20220315211729792

端口已经改变,成功启动为开发环境。

@Profile注解多环境配置

相关注解

@Profile:作用于类,通过value属性指定环境配置

这里为了演示,先定义一个接口,如下:

public interface DBConnector {

    public void configure();
}

定义两个类实现如下接口,用来模拟生产环境和测试环境。生产环境类如下:

@Configuration
@Profile(value = "dev")
public class DevDBConnector implements DBConnector{

    @Override
    public void configure() {
        System.out.println("数据库配置===dev");
    }
}

重点就是@Profile注解,value值用来指定相关环境。注解方式也要在全局配置文件中配置spring.profiles.active的值。都配置好后,在测试类中进行测试,相关代码如下:

@Autowired
private DBConnector dbConnector;
@Test
public void dbtest(){
    dbConnector.configure();
}

运行测试,发现成功输出数据库配置===dev,如下:

SpringBoot入门笔记第二篇 | Spring Boot核心配置于注解
image-20220315214244817

想要切换环境,只需要修改Profile中value值就可以了。

随机值设置

语法格式:

${random.xx}

比如在全局配置文件中有如下配置:

SpringBoot入门笔记第二篇 | Spring Boot核心配置于注解
image-20220315220157088

然后我在测试类中进行测试,案例代码如下:

@Value("${my.secret}")
private String secret;
@Test
public void testnum(){
    System.out.println(secret);
}

然后输出结果如下:其他同理

SpringBoot入门笔记第二篇 | Spring Boot核心配置于注解
image-20220315220352234

参数间引用

语法格式:

${xxx}  xxx表示先前在配置文件中已经配置过的属性名。

什么意思呢?举一个例子,比如我在全局配置文件中,之前设置了一个配置,name=lxflxf,现在有了一个新需求就是添加lxflxf的年龄。那我们就可以使用参数间引用,用上方的格式,我们就可以写 age=${name} is 18

现在我们代码实现一下,全局配置文件写入:

name=lxflxf

age=${name} is 18

测试代码如下

@Value("${age}")
private String test;
@Test
public void testage(){
    System.out.println(test);
}

发现参数引用成功,如下:

SpringBoot入门笔记第二篇 | Spring Boot核心配置于注解
image-20220315221654729

                

【往期推荐】

SpringBoot入门笔记第一篇 | 环境准备、构建项目、单元测试、热部署

漏洞复现 | CVE-2022-0847内核提权漏洞(POC已公开)

漏洞监控平台——Monitor(源码在文末)

使用poste搭建自己的邮件服务器

实战 | 一次杀猪盘的拿shell经历

DC-1靶机实战和分析

实战|一个表白墙引发的“血案”


原文始发于微信公众号(小艾搞安全):SpringBoot入门笔记第二篇 | Spring Boot核心配置于注解

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月17日02:38:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   SpringBoot入门笔记第二篇 | Spring Boot核心配置于注解http://cn-sec.com/archives/830232.html

发表评论

匿名网友 填写信息