• 02、@PropertySource指定配置文件的属性映射到JavaBean属性


    零、@PropertySource 功能类似于

    <context:property-placeholder location="classpath*:/config/load.properties"/>
    @Configuration
    @PropertySources(
            @PropertySource(value = "classpath:/config/load.properties",ignoreResourceNotFound = true,encoding = "UTF-8")
    )
    public class ServerProperties {
        @Value("${liubin.test.name}")
        private String name;
    
        public String getName() {
            return name;
        }
    }

    一、引入配置文件注解PropertySource源码

    package org.springframework.context.annotation;
    
    import ....;
    
    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Repeatable(PropertySources.class)
    public @interface PropertySource {
        String name() default "";
    
        String[] value();//可以是多个
    
        boolean ignoreResourceNotFound() default false;
    
        String encoding() default "";
    
        Class<? extends PropertySourceFactory> factory() default PropertySourceFactory.class;
    }

    二、PropertySources中
    包含多个PropertySource
    package org.springframework.context.annotation;
    
    import java.lang.annotation.Documented;
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    
    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface PropertySources {
        PropertySource[] value();
    }

    三、引入配置文件后配置项被@Value注解使用

    @Component
    @PropertySource("classpath:teacher.properties")
    public class Student {
    
        @Value("${name}")
        private String name;
    
        @Value("${age}")
        private int age;
    
        @Value("${sex}")
        private String sex;
    
        @Value("${height}")
        private int height;
    
        @Value("${weight}")
        private int weight;
    }

    四、引入配置文件后配置项被Spring Boot 的@ConfigurationProperties使用,一站式注入到相应的JavaBean的所有属性中

    @PropertySource({"classpath:teacher.properties"}) //指定某配置文件,无此参数则在默认全局配置文件中获取
    @Component
    @ConfigurationProperties(prifix=“teacher”) //配置文件中前缀名为teacher的配置项的所有属性都映射到此JavaBean中
    public class Teacher {
        private String name;
    
        private int age;
    
        private String sex;
    
        private int height;
    
        private int weight;
    
      getset方法
    }

    五、不同的属性配置文件中若有相同的配置项,写在后面配置文件中的属性覆盖前面的

    @PropertySources(
        {
            @PropertySource("classpath:teacher.properties")
        }
    )
  • 相关阅读:
    知多少进程?
    提高.NET应用性能
    战术设计DDD
    win7下exe文件设置为开机启动
    CQRS项目
    DDD总览
    ML.Net Model Builder
    MySQL主主复制搭建教程收集(待实践)
    MySQL主从复制搭建教程收集(待实践)
    MySQL集群方案收集
  • 原文地址:https://www.cnblogs.com/guchunchao/p/9853118.html
Copyright © 2020-2023  润新知