【Java】@ConfigurationProperties+@PropertySource读取配置文件数据

  • Post author:
  • Post category:java




前提

最近在写代码的过程中,看到一个读取配置文件的方式,感觉挺有用的,记录一下。



配置文件装填Map类型



1. 配置文件mysql-datatype.properties内容

datasource.type[CHAR]=STRING
datasource.type[CHARACTER]=STRING
datasource.type[VARCHAR]=STRING
datasource.type[TEXT]=STRING

配置文件放在项目的resource目录下的config目录

在这里插入图片描述



2. DemoDataTypeConfiguration读取配置文件类

java代码如下:

@Configuration("mysql_configuration")
@PropertySource(value = "classpath:config/mysql-datatype.properties")
@ConfigurationProperties(prefix = "datasource")
public class DemoDataTypeConfiguration {
    public Map<String, String> datasourceType = new HashMap<>();


    public Map<String, String> getType() {
        return datasourceType;
    }

    /**
     * 这里的形参名一定要和配置文件的datasource.XX相对应 我这里配置文件用的type 我也只能用type
     * @param type
     */
    public void setType(Map<String, String> type) {
        this.datasourceType = type;
    }
}

这里用到了

@Configuration


@PropertySource


@ConfigurationProperties

三个注解



3. 具体使用实例

这里的使用你可以在可以使用

@Autowired

注解的类中使用,可以在工具类中使用实现

ApplicationContextAware

的类中获取

ApplicationContext

这是两种方式,都是可以的。



3.1 使用@Autowired 获取ApplicationContext

代码截图:

在这里插入图片描述

使用效果:
在这里插入图片描述

这里已经全部获取到了。封存在map里 了。



3.2 使用ApplicationContextAware获取ApplicationContext

代码实现:

@Component
public class ApplicationContextUtils implements ApplicationContextAware {
    private static  ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        ApplicationContextUtils.applicationContext = applicationContext;
    }

    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }
}

实现效果:

在这里插入图片描述

也能获取到



版权声明:本文为sdut406原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。