Spring Boot企业级开发教程-第二章 SpringBoot核心配置与注解

文章目录

  • 2.1Spring Boot的全局配置文件
    • application.properties
    • application.yaml
  • 2.2 配置文件属性值的注入
    • 使用@ConfigurationProperties注入属性
    • 使用@Value注入属性
    • 两种注解的对比分析
  • 2.3 Spring Boot自定义配置
    • 使用@PropertySource加载配置文件
    • 使用@ImportResource加载XML配置文件
    • 使用@Configuration编写自定义配置类
  • 2.4 Profile多环境配置
    • Profile多环境配置
      • 使用Profile文件进行多环境配置
    • 使用@Profile注解进行多环境配置
  • 2.5随机值设置以及参数间引用
    • 随机值设置
    • 随机值设置以及参数间引用
    • 参数间引用

2.1Spring Boot的全局配置文件

application.properties

#普通属性值的配置
server.port=8081
server.servlet.context-path=/chapter02
#对象类型
person.id=1
person.name=zhangsan
person.hobby=play,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超集文件格式
  • 相较于传统的Propertiesi配置文件,YAML文件以数据为核心,是一种更为直观且容易被电脑识别的数据序列化格式。
  • application.yaml文件的工作原理和application.properties 一样
  • 语法格式
    key:(空格)value
  • 示例代码:
server:
	port: 8081
	path: /hello
#当value值为普通数据类型的配置
server:
	port: 8082
	servlet:
		context-path: /hello
#当value值为数组或者单列集合
hobby:
	-play
	read
	-sleep
方式2
hobby: [play,read,sleep]
#当value值为map的时候
map:
	k1: v1
	k2: v2
#方式2
map: {k1: 1,k2: 2}
#对实体类对象person进行属性配置
person:
	id: 2
	name: lisi
	hobby: [sing,read,sleep]
	family: [father,mother]
	map: (k1:v1,k2:v2}
	pet: {type:cat,name:tom}

2.2 配置文件属性值的注入

使用@ConfigurationProperties注入属性

  • 相关注解:
    @Component
    @ConfigurationProperties(prefix = “xxx”)
  • 示例代码
    @Component
    @ConfigurationProperties(prefix ="person")
    public class Person{
    	private int id;
    	public void setId(int id){
    		this.id = id;}}
    
    • 注意:使用@ConfigurationProperties注解批量注入属性值时,要保证配置文件中的属性与对应实体类的属性一致,否则无法正确获取并注入属性值。

使用@Value注入属性

  • 示例代码
@Component
public class Person{
@Value("S(person.id}")
private int id;}

使用@Value注解对每一个属性注入设置,免去了属性setXX()方法

两种注解的对比分析

在这里插入图片描述

  • 松散绑定语法
    #标准写法
    person.firstName=wangwu
    #使用横线-来对单词进行分隔
    person.first-name=wangwu
    #使用下划线分隔
    person.first_name=wangwu
    #常量
    PERSON.FIRST_NAME=wangwu
    
  • JSP303数据校验
@Validated
public class User
//以邮箱形式校验
@Email
private String email;
  • SpEl
    注入驱动、连接地址、用户名、密码,一些数据库的相关信息

2.3 Spring Boot自定义配置

使用@PropertySource加载配置文件

  • 相关注解
    @PropertySource:指定自定义配置文件的位置和名称
    @Configuration:自定义配置类,Spring容器组件
  • 案例演示
    1、创建Spring Boot项白,添加Web依赖。
    2、在项目的类路径下新建一个test.properties自定义配置文件,在该配
    置文件中编写需要设置的配置属性。
#对实体类对象MyProperties进行属性配置
test.id=110
test.name=test

3、在com.itheima.domain包下新创建一个配置类MyProperties,提供test.properties自定义配置文件中对应的属性,并根据@PropertySource注解的使用进行相关配置。
- @Configuration注解用于表示当前类是一个自定义配置类,该类会作为Bean组件添加到Spring容器中,这里等同于@Component注解。
- @PropertySource(“classpath:test.properties”)注解指定了自定义配置文件的位置和名称,此示例表示自定义配置文件为classpath类路径下的test.properties文件。
- @ConfigurationProperties(prefix=“test”)注解将上述自定义配置文件test.properties中以test开头的属性值注入该配置类属性中。
- @EnableConfigurationProperties(MyProperties.class)注解表示开启对应配置类MyProperties的属性注入功能,该注解是配合@ConfigurationProperties使用的。如果自定义配置类使用了@Component注解而非@Configuration注解,那么@EnableConfigurationProperties注解可以省略

/@component
@Configuration
@PropertySource("classpath:test.properties")
@EnableConfigurationProperties(MyProperties.class)
@ConfigurationProperties(prefix ="test")
public class MyProperties{}

使用@ImportResource加载XML配置文件

  • 相关注解:
    @ImportResource:指定XML文件位置
  • 案例演示
    1、在chapter02项目下新建一个com.itheima.config包,并在该包下新
    创建一个类MyService,该类中不需要编写任何代码。
    public class MyService{}
    2、在resources目录下新建一个名为beans.xml的XML自定义配置文件,在该配置文件中通过配置向Spring容器中添加MyService类对象。
<?xml version="1.0"encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans.xsd">
	<bean id="myService"class="com.itheima.config.MyService"/>
</beans>

3、项目启动类上添加@ImportResource注解来指定XML文件位置。@ImportResource(“classpath:beans.xml”)
4、在测试类中引入ApplicationContext实体类Bean,并新增一个测试方法进行输出测试。

@Autowired
private ApplicationContext = applicationContext;
@Test
public void iocTest(){
	System.out.println(applicationContext.containsBean("myService"));}

使用@Configuration编写自定义配置类

  • 相关注解:
    @Configuration:定义一个配置类
    @Bean:进行组件配置
  • 案例演示
    1、在现有的项目基上建一个类MyConfig,使用@Configuration注解将该类声明一个配置类。
@Configuration
public class MyConfig
@Bean
public MyService myService(){
	return new MyService();
}

2.4 Profile多环境配置

Profile多环境配置

  • 为什么需境配置?
    在实际开发中,应用程序通常需要部署到不同的运行环境中,例如开发环境、测试环境、生产环境等。不同的环境可能需要不同的环境配置,针对这种情况,不可能手动变更配置文件来适应不同的开发环境,此时就需要对项目进行多环境配置
  • 多环境配置方式
    Profile文件多环境配置
    @Profile注解多环境配置

使用Profile文件进行多环境配置

  • 多环境配置文件格式
    application-(profile).properties
    注:{profile}对应具体的环境标识(dev/prod/test)
    在这里插入图片描述
  • 激活指定环境的方式
    • 通过命令行方式激活指定环境的配置文件
      在这里插入图片描述
    • 在全局配置文件设置spring-profiles.active属性激活

在这里插入图片描述

使用@Profile注解进行多环境配置

  • 相关注解
    • @Profile:作用于类,通过valuel属性指定环境配置
      • 注:等同于Profile文件名称中的profile值。
        在这里插入图片描述
        在这里插入图片描述
  • 激活指定环境的方式
    • 在全局配置文件中配置spring.profiles.active属性
      在这里插入图片描述

2.5随机值设置以及参数间引用

随机值设置

  • 语法格式
    ${random.xx} xx表示需要指定生成的随机数类型和范围
  • 示例代码
#配置随机数
my.secret=$(random.value)
#配置随机数为整数
my.number=$frandom.int
#配置随机数为1ong类型
my.bignumber=$(random.long)
#配置随机数为uuid类型
my.uuid=$(random.uuid}
#配置小于10的随机整数
my.number.less.than.ten=$random.int(10)
#配置范围在【1024,65536】之间的随机整数
my.number.in.range=$frandom.int[1024,65536])

在这里插入图片描述

随机值设置以及参数间引用

  • 案例演示(随机值设置以及参数值引用)
    • 1.在全局配置文件application.properties中设置测试属性。
      tom.age=${random.int[10,20]}
      tom.description=tom的年龄可能是${tom.age}

参数间引用

  • 语法格式
    ${xx} xx表示先前在配置文件中已经配置过的属性名
  • 示例代码
    app.name=MyApp
    app.description=${app.name}is a Spring Boot application
    在这里插入图片描述
上一篇:JVM_垃圾收集器


下一篇:普通Java工程可执行JAR两种打包方式探讨