1、配置文件
优先级 application.peoperties>application.yml
2、配置文件参数注入
- @ConfigurationProperties(prefix="XXX") 用于类上自动从配置文件中注入对象属性寻找依据 XXX(最新版springboot使用该注解需要导入依赖)
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
//示例 类 @ConfigurationProperties(prefix = "stu") class Stu{ private String name; private List<String> address; public String getName() { return name; } public void setName(String name) { this.name = name; } } //配置文件 application.yml stu: name:zhangsan application.properties stu.name=zhangsan stu.address[0]=北京 //测试 @SpringBootTest class MyTest { @Autowired Student student; @Test void contextLoads() { System.out.println(student.getName()); } } //输出就结果 : zhangsan
- @Value 从配置文件中给对象属性赋值
@Component public class Stu { @Value("${name}") private String name; @Value("${age}") private int age; @Value("${birthday}") private Date birthday; @Value("${list}") private List<String> list; @Value("#{${maps}}")//此处外面要加一个#{}不知道为啥???????? private Map<String,String> maps; //get/set省略 } application.yml name: lch123 list: 1,2,3,4,5 age: 123 birthday: 2020/2/2 maps: "{key1: 'value1', key2: 'value2'}" 输出结果 Stu{name='lch123', age=123, birthday=Sun Feb 02 00:00:00 CST 2020, list=[1, 2, 3, 4, 5], maps={key1=value1, key2=value2}}
@Value和@ConfigurationProperties区别
@ConfigurationProperties @Value 例 实现功能 批量注入配置文件的属性值 一个一个指定 松散绑定(松散语法) 支持 不支持 last_name == lastName
last-name == lastName SpEL 不支持 支持 #{10*2} JSR303数据校验 支持 不支持
3、加载局部配置文件
@PropertySource(value = {"classpath:/db.properties"})
该类会读取到db.properties配置文件
4、引入xml
@ImportResource(locations = {"classpath:Student.xml"})
5、自定义配置类
@Configuration
用法
@Configuration public class StudentConfig { @Bean public Student getStudent(){ Student student = new Student(); student.setBirthday(new Date()); return student; } }
6、profile多环境支持
- application.propertiues(多个配置文件)
spring.profiles.active=dev # 启用 application-dev.properties 配置文件中的配置 spring.profiles.active=prov # 启用 application-dev.properties 配置文件中的配置
- application.yml
server: port: 8080 spring: profiles: active: dev # 指定激活的配置代码块 --- #标记一个配置块 server: port: 8081 spring: profiles: dev #配置代码块名称 --- server: port: 8082 spring: profiles: prod #配置代码块名称
- 启动时指定
java -jar xxx.jar --spring.profiles.active=dev
7、配置文件读取顺序
根目录下-->根目录下的config目录-->类路径下的config目录-->类路径下
8、日志配置(默认使用logback)
- 获取日志对象
import org.slf4j.Logger; import org.slf4j.LoggerFactory; Logger logger = LoggerFactory.getLogger(getClass());
- 修改日志默认级别
# com包下的级别 logging.level.com=trace # 设置root级别 logging.level.root=debug
- 日志文件路径
#指定日志文件生成路径 默认为 项目根目录下 设置logging.file时logging.path不生效 logging.path=D:/log #指定日志文件名(也可以带路径) 默认文件名spring.log 设置logging.file时logging.path不生效 logging.file=D:/log.log
- 日志文件输出格式
%d 输出日期时间, # %thread 输出当前线程名, # %-5level 输出日志级别,左对齐5个字符宽度 # %logger{50} 输出全类名最长50个字符,超过按照句点分割 # %msg 日志信息 # %n 换行符 # 修改控制台输出的日志格式 logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n # 修改文件中输出的日志格式 logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS} >>> [%thread] >>> %-5level >>> %logger{50} >>> %msg%n
- 自定义日志配置(当需要定义更丰富的日志功能时。application.properties可能无法满足我们的需要。因此需要使用xml实现更详细的功能,使用不同名称的xml文件名来启动不同的日志框架)
日志框架 文件名 logback logback.xml、 logback-spring.xml
logback.groovy、logback-spring.groovy
log4j2 log4j2.xml log4j2-spring.xml