spring boot 核心技术

举报
小米粒-biubiubiu 发表于 2020/12/02 22:51:26 2020/12/02
【摘要】                                        spring boot  核心技术 一. @PropertySource  @ConfigurationProperties  @ImportResource @Value 的用法 @Component@ConfigurationProperties(prefix = "person")@Da...

                                       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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。