spring boot 核心技术

                                       spring boot  核心技术

一. @PropertySource  @ConfigurationProperties  @ImportResource @Value 的用法


  
  1. @Component
  2. @ConfigurationProperties(prefix = "person")
  3. @Data
  4. @PropertySource(value = {"classpath:person.properties"})
  5. public class Person {
  6. @Value("${person.name}")
  7. private String name;
  8. private Integer age;
  9. private List<Object> list;
  10. private Map<String,Object> map;
  11. private Dog dog;
  12. }
  13. @Data
  14. public class Dog {
  15. private String name;
  16. private String age;
  17. }
  18. public class MailServiceTest extends MailserverApplicationTests {
  19. @Autowired
  20. private Person person;
  21. @Test
  22. public void getPerson(){
  23. System.out.println(person);
  24. }
  25. }
  26. @SpringBootApplication
  27. @ImportResource(locations = {"classpath:beans.xml"})
  28. public class MailserverApplication {
  29. public static void main(String[] args) {
  30. SpringApplication.run(MailserverApplication.class, args);
  31. }
  32. }
编写 自定义的person.properties 文件

  
  1. person.name=张无忌
  2. person.age=18
  3. person.list=1,2,3
  4. person.map.k1=v1
  5. person.map.k2=v2
  6. person.dog.name=小狗
  7. person.dog.age=7

执行测试方法getPerson  看到控制台输出 person信息 ,说明 自动读取 person.properties 文件 并 注入到 person 对象成功。

 编写 beans.xml


  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  5. <bean id="mailService" class="com.example.mailserver.service.MailService"></bean>
  6. </beans>

@ ConfigurationProperties 自动 读取 application.yml 或者 application.properties中的属性 注入到 person中

@PropertySource  用于指定自定义的 配置文件,如果没有指定默认就是 读取 application.properties

@ImportResource 用来导入 spring 的 xml 配置文件,使之生效

二 、spring.profiles.active用法 

properties 配置方式 ,以 application-{name}.properties的格式命名


  
  1. application.prtoperties 文件
  2. server.port=8000
  3. spring.profiles.active = prod #配置当前使用的为生产环境配置文件
  4. application-prod.properties 生产环境配置文件
  5. server-port=8001
  6. application-dev.properties 开发环境配置文件
  7. server.port=8002

yml 文档块配置方式


  
  1. #yml 文档块的方式指定 使用 生产环境还是 开发 环境配置
  2. server:
  3. port: 8081
  4. spring:
  5. profiles:
  6. active: dev
  7. ---
  8. server:
  9. port: 8082
  10. spring:
  11. profiles: pro
  12. ---
  13. server:
  14. port: 8083
  15. spring:
  16. 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 包 排除掉了(避免包冲突),因为用来替换的中间包 和 原来 被 替换掉的中间的包名 都是一样的。


  
  1. <dependency>
  2. <groupId>org.springframework</groupId>
  3. <artifactId>spring-core</artifactId>
  4. <exclusions>
  5. <exclusion>
  6. <groupId>commons-logging</groupId>
  7. <artifactId>commons-logging</artifactId>
  8. </exclusion>
  9. </exclusions>
  10. </dependency>

 

文章来源: blog.csdn.net,作者:血煞风雨城2018,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_31905135/article/details/82764702

(完)