zoukankan      html  css  js  c++  java
  • SpringBoot学习笔记(2)配置文件

    1.配置文件

    SpringBoot 使用一个全局的配置文件,配置文件名是固定的

    • application.properties
    • application.yml

    配置文件的作用: 可以覆盖SpringBoot配置的默认值

    2.YAML配置文件

    YAML(YAML Ain’t Markup Language)
    YAML A Markup Language:是一个标记语言
    YAML isn’t Markup Language:不是一个标记语言

    标记语言:
    以前的配置文件;大多都使用的是 xxxx.xml文件;
    YAML:以数据为中心,比json、xml等更适合做配置文件;

    YAML

    #普通配置文件.properties的语法
    #server.port=80
    
    #xml的写法
    #<server>
    #   <port>80</port>
    #</server>
    
    #yml 以数据为中心的语法
    server:
      port: 8080
    

    YAML语法
    k:(空格) v: 表示一对键值对(空格必须有)
    以空格的缩进来控制层级关系,只要是左对齐的一列数据,都是同一层级的。
    属性和值大小写敏感

    server:
      port: 8080
      path: /hello
    

    key: value(数字,字符,布尔)
    字符串默认不加单引或双引;
    双引号:会转义字符串里面的特殊字符;特殊字符会作为本身想表达的意思
    nam: “meng yang” :输出 meng 换行 yang
    单引号:不会转义特殊字符
    name: ‘meng yang’ :输出 meng yang

    对象、Map(属性和值)
    k: v :在下一行来写对象的属性和值的关系,注意缩进

    person:
      name: mengY
      age: 24
    

    行内写法

    person: {name: meng,age: 24}
    

    数组(list,set)
    用- 值表示数组中的一个元素

    pets:
      - cat
      - dog
      - pig
    

    行内写法

    pets: [cat, dog, pig]
    

    配置文件值注入
    配置文件

    #yml 以数据为中心的语法
    server:
      port: 8080
      path: /hello
    
    person:
      name: meng
      age: 24
      boss: false
      birth: 1995/03/13
      maps: {k1: v1,k2: v2}
      lists:
        - index1
        - index2
      dog:
        name: 小狗
        age: 5
    

    javaBean:

    /**
     * 将配置文件中的值,映射到这个组件中
     * @ConfigurationProperties :告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定
     *      prefix = "person"
     * @Component 只有这个组件是容器中的组件,才能使用容器提供的@ConfigurationProperties功能
     */
    @Component
    @ConfigurationProperties(prefix = "person")
    public class PersonPO {
        private String name;
        private int age;
        private Boolean boss;
        private Date birth;
    
        private Map<String,Object> maps;
        private List<String> list;
        private DogPO dog;
    

    我们可以导入配置文件处理器,以后编写配置就有提示了

    <!-- 导入配置文件处理器-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <optional>true</optional>
            </dependency>
    

    3.properties配置文件

    #配置javaBean
    person.name=张三
    person.age=24
    person.birth=1995/03/13
    person.boss=false
    person.maps.k1=v1
    person.maps.k2=v2
    person.maps.k3=v3
    person.list=a,b,c
    person.dog.name=dog
    person.dog.age=5
    

    4.配置值的两种方式

    @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定
    @Value:对单个值进行数据绑定

        @Value("${person.name}")
        private String name;
        @Value("#{person.age * 2}")
        private int age;
        @Value("true")
        private Boolean boss;
    

      

     配置文件yml还是properties他们都能获取到值;
    如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value; 如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;

    @PropertySource&@ImportResource&@Bean

    @PropertySource:加载指定的配置文件;

     @ImportResource:导入Spring的配置文件,让配置文件里面的内容生效; Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别; 想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上

    @ImportResource(locations = {"classpath:beans.xml"}) 
    导入Spring的配置文件让其生效
    

    Spring配置文件

    <?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="helloService" class="com.atguigu.springboot.service.HelloService"></bean> 
    </beans>
    SpringBoot推荐给容器中添加组件的方式;推荐使用全注解的方式
    1、配置类**@Configuration**------>Spring配置文件
    2、使用**@Bean**给容器中添加组件
    /**
     *  @Configuration:指明当前类是一个配置类;就是来替代之前的Spring配置文件
     *  在配置文件中用<bean><bean/>标签添加组件
     */
    @Configuration
    public class MyAppConfig {
         //将方法的返回值添加到容器中;容器中这个组件默认的id就是方法名     
        @Bean
        public HelloService helloService02(){
            System.out.println("配置类@Bean给容器中添加组件了...");
            return new HelloService(); 
        }
    }
    5.随机数占位符

    随机数

    ${random.value}、${random.int}、${random.long} ${random.int(10)}、${random.int[1024,65536]}
    

     **占位符获取之前配置的值,如果没有可以是用:指定默认值 **

    person.last‐name=张三${random.uuid} 
    person.age=${random.int} 
    person.birth=2017/12/15 
    person.boss=false 
    person.maps.k1=v1 
    person.maps.k2=14 
    person.lists=a,b,c 
    person.dog.name=${person.hello:hello}_dog 
    person.dog.age=15
    
    6.多Profile文件

    我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml
    默认使用application.properties的配置;

     

  • 相关阅读:
    从RUU中提取HTC官方ROM
    AndroidRom制作(一)——Rom结构介绍、精简和内置、一般刷机过程
    写在"跳槽旺季"
    从团宝危机谈行业洗牌
    Session和Cookie的关系
    Django常用模板标签
    ASP.NET论坛调查
    SourceForge支持新的版本控制系统
    ORACLE传奇
    Linked Data下一代WWW
  • 原文地址:https://www.cnblogs.com/mengY/p/11683952.html
Copyright © 2011-2022 走看看