一、核心配置文件
(1)application.properties
(2)application.yml
(3)原理一样,格式不同,当两种格式的核心配置文件同时存在时,2.4.0以上的版本的SpringBoot优先使用以.yml为后缀的核心配置文件,2.4.0以下版本的SpringBoot优先使用.properties为后缀的核心配置文件。
(4)其他相关配置可查询
https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
二、自定义配置信息&属性注入
属性注入(将配置文件内的属性注入都对应的类对象当中)
(1)@Value:在配置文件内定义好学生信息,在学生类中使用注解@Value注入
package com.cld.demo.bean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class Student {
@Value("${student.name}")
private String name;
@Value("${student.classes}")
private String classes;
public String getName() {
return name;
}
public String getClasses() {
return classes;
}
}
@Autowired
Student student;
@Test
public void testStudent(){
System.out.println("学生姓名:" + student.getName());
System.out.println("学生班级:" + student.getClasses());
}
(2)@ConfigurationProperties(prefix = "teacher"):在配置文件内定义好教师信息,在教师类内批量注入(教师类内需要提供setter方法,才能够注入)
package com.cld.demo.bean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "teacher")
public class Teacher {
private String name;//姓名
private Integer age;//年龄
private String classes;//班级
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 getClasses() {
return classes;
}
public void setClasses(String classes) {
this.classes = classes;
}
}
@Autowired
Teacher teacher;
@Test
public void testTeacher(){
System.out.println("教师姓名:" + teacher.getName());
System.out.println("教师年龄:" + teacher.getAge());
System.out.println("教师班级:" + teacher.getClasses());
}
三、自定义配置文件和自定义配置类
1、@PropertySource加载自定义配置文件:当把所有的配置信息都写在核心配置文件的时候,就会出现配置文件配置信息内容过多,不便查询和修改没课自定义配置存放不同情况的配置信息。要使用自定义配置文件,需要加载
新建自定义配置文件teacher.properties
在Teacher类内指定加载teacher.properties文件,并进行属性注入
注意:@PropertySource("classpath:teacher.properties")只能够加载properties格式的配置文件
2、@Configuration定义配置类,@Bean 注册Bean组件到IOC容器中
(1)定义一个MyService类
(2)编写MyConfig配置类
3、@ImportResource加载xml配置文件
(1)配置文件Beans.xml
(2)启动类加上@ImportResource("classpath:beans.xml")
四、多环境配置
1、配置文件命名标识:application-(文件标识名).properties
分别编写测试环境的配置文件application-test.properties和生产环境的配置文件application-dev.properties,在核心配置文件application.properties里面通过spring.Profiles.active属性激活配置环境。
2、@Profile注解:标识不同的配置环境,作用于类
(1)配置类内编写
(2)激活
- 方式一:在核心配置文件内通过spring.profiles.active属性激活
- 方式二:@ActiveProfile激活
@SpringBootTest
@ActiveProfiles("service1")
class DemoApplicationTests {
@Autowired
MyService myService;
@Test
public void testProfile(){
System.out.println(myService.say());
}
}