存在目的:

    1. 使用@Value和@ConfigurationProperties可以从全局配置文件application.properties或者application.yml中取值,然后为需要的属性赋值。
    2. 但是当应用比较大的时候,如果所有内容都在一个配置文件中,会显得比较臃肿,同时也不太好理解和维护,此时可以将一个文件拆分成多个,使用@PropertySource注解可以加载指定的配置文件。

    @PropertySource源码

    1. @Target({ElementType.TYPE})
    2. @Retention(RetentionPolicy.RUNTIME)
    3. @Documented
    4. @Repeatable(PropertySources.class)
    5. public @interface PropertySource {
    6. //属性源的名称
    7. String name() default "";
    8. //属性文件的存放路径
    9. String[] value();
    10. //如果指定的属性源不存在,是否忽略这个错误
    11. boolean ignoreResourceNotFound() default false;
    12. //属性源的编码格式
    13. String encoding() default "";
    14. //属性源工厂
    15. Class<? extends PropertySourceFactory> factory() default PropertySourceFactory.class;
    16. }

    使用示例:

    1. jdbc.driver=com.mysql.jdbc.Driver
    2. jdbc.url=jdbc:mysql://localhost:3306/area
    3. jdbc.username=root
    4. jdbc.password=MGY2207242001
    1. @Configuration
    2. //<context:property-placeholder location="classpath:config/jdbc.properties"/>
    3. @PropertySource(value = "classpath:config/jdbc.properties", encoding = "utf-8")
    4. public class DataSourceConfiguration {
    5. @Value("${jdbc.driver}")
    6. private String drive;
    7. @Value("${jdbc.url}")
    8. private String url;
    9. @Value("${jdbc.username}")
    10. private String username;
    11. @Value("${jdbc.password}")
    12. private String password;
    13. }
    1. @Configuration
    2. //<context:property-placeholder location="classpath:config/jdbc.properties"/>
    3. @PropertySource(value = {"config/jdbc.properties"}, encoding = "utf-8")
    4. @ConfigurationProperties(prefix = "jdbc")
    5. public class DataSourceConfiguration {
    6. private String drive;
    7. private String url;
    8. private String username;
    9. private String password;
    10. }