spring boot 核心技术
一. @PropertySource @ConfigurationProperties @ImportResource @Value 的用法
-
-
@Component
-
@ConfigurationProperties(prefix = "person")
-
@Data
-
@PropertySource(value = {"classpath:person.properties"})
-
public class Person {
-
-
@Value("${person.name}")
-
private String name;
-
-
private Integer age;
-
-
private List<Object> list;
-
-
private Map<String,Object> map;
-
-
private Dog dog;
-
}
-
-
-
-
-
-
@Data
-
public class Dog {
-
-
private String name;
-
-
private String age;
-
}
-
-
-
-
public class MailServiceTest extends MailserverApplicationTests {
-
@Autowired
-
private Person person;
-
-
@Test
-
public void getPerson(){
-
System.out.println(person);
-
}
-
}
-
-
-
-
@SpringBootApplication
-
@ImportResource(locations = {"classpath:beans.xml"})
-
public class MailserverApplication {
-
-
public static void main(String[] args) {
-
SpringApplication.run(MailserverApplication.class, args);
-
}
-
}
-
-
-
编写 自定义的person.properties 文件
-
person.name=张无忌
-
person.age=18
-
person.list=1,2,3
-
person.map.k1=v1
-
person.map.k2=v2
-
person.dog.name=小狗
-
person.dog.age=7
执行测试方法getPerson 看到控制台输出 person信息 ,说明 自动读取 person.properties 文件 并 注入到 person 对象成功。
编写 beans.xml
-
<?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="mailService" class="com.example.mailserver.service.MailService"></bean>
-
</beans>
@ ConfigurationProperties 自动 读取 application.yml 或者 application.properties中的属性 注入到 person中
@PropertySource 用于指定自定义的 配置文件,如果没有指定默认就是 读取 application.properties
@ImportResource 用来导入 spring 的 xml 配置文件,使之生效
二 、spring.profiles.active用法
properties 配置方式 ,以 application-{name}.properties的格式命名
-
application.prtoperties 文件
-
server.port=8000
-
spring.profiles.active = prod #配置当前使用的为生产环境配置文件
-
-
application-prod.properties 生产环境配置文件
-
server-port=8001
-
-
application-dev.properties 开发环境配置文件
-
server.port=8002
yml 文档块配置方式
-
#yml 文档块的方式指定 使用 生产环境还是 开发 环境配置
-
server:
-
port: 8081
-
spring:
-
profiles:
-
active: dev
-
---
-
server:
-
port: 8082
-
spring:
-
profiles: pro
-
---
-
server:
-
port: 8083
-
spring:
-
profiles: dev
三种激活方式:
命令行 : --spring.profiles.active= dev
jvm参数 : -Dspring.profiles,active=dev
配置文件中配置: spring.profiles.active=dev
三. 配置文件加载优先级,由高到低
四. 自动配置原理
我们 可以在 application.properties 中 配置 debug=true,在启动项目的时候就可以看到 详细的 自动配置报告,可以看到 那些类自动 配置成功, 哪些类 没有 自动配置成功。
五. 日志框架的使用,统一日志框架到slf4j+logback
每一个日志框架都有自己的实现, 配置文件还是做成日志框架实现自己本身的配置文件。
比如我们在开发一个项目的时候,使用 了 slf4j + logback 日志框架, 但是在 引入的其他框架里面使用了 commons-logging,
log4j ,java.util.logging 进行日志输出,那么这个时候就需要 我们去 统一 日志 框架了,统一日志框架分三步走 :
(1)排除 项目中其他的日志框架依赖
(2)用上图中的中间包来替换掉原有的日志框架
(3)导入slf4j 的 实现 logback
如果我们要引入其他框架,一定要把 这个框架默认的日志依赖移除掉,比如 spring 框架用的是commons-logging ,
spring boot 使用的是 slf4j + logback , 以以下的方式 把 commons-logging 包 排除掉了(避免包冲突),因为用来替换的中间包 和 原来 被 替换掉的中间的包名 都是一样的。
-
<dependency>
-
<groupId>org.springframework</groupId>
-
<artifactId>spring-core</artifactId>
-
<exclusions>
-
<exclusion>
-
<groupId>commons-logging</groupId>
-
<artifactId>commons-logging</artifactId>
-
</exclusion>
-
</exclusions>
-
</dependency>
文章来源: blog.csdn.net,作者:血煞风雨城2018,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq_31905135/article/details/82764702