Spring读取Properties配置文件

 一、application.properties 配置文件

  ①:用Spring容器获取Environment变量,然后getProperty获取到配置的value

    ConfigurableEnvironment environment = context.getEnvironment(); 
    String name = environment.getProperty("name");

  ②:@Value注解

    使用@Value("${key}"

  ③:@ConfigurationProperties

    @ConfigurationProperties注解有一个prefix属性,通过指定的前缀,绑定配置文件中的配置,如:

@Component
@ConfigurationProperties(prefix = "global.jdbc")
public class GlobalProperties {
    private String url;
    private String driver;
    private String username;
    private String password;

    ...getter/setter
}

 

 

 

 二、自定义properties 配置文件

  ①:@PropertySource + @Value("${key}") 

    @PropertySource :使用@PropertySource读取外部配置文件中的k/v保存到运行的环境变量Environment中;

    如:@PropertySource("classpath:mysql.properties")

    取值方式:

      ①:使用@Value("${key}"

      ②:也可以用Spring容器获取Environment变量,然后getProperty获取到配置的value

        ConfigurableEnvironment environment = context.getEnvironment(); 
        String name = environment.getProperty("name");

 

  ②:自行直接读取配置文件的值并缓存

public final class PropertiesUtil {

    private static final Logger LOGGER = LoggerFactory.getLogger(PropertiesUtil.class);

    private PropertiesUtil() {
    }

    private static final Properties PROPERTIES = readProperties(
            "config.properties",
            "mysql.properties",
            "redis.properties",
            "mongo.properties",
            "talos.properties"
    );

    private static Properties readProperties(String... confFile) {
        final Properties properties = new Properties();
        try {
            for (String path : confFile) {
                final ClassPathResource resource = new ClassPathResource(path);
                if (resource.exists()) {
                    properties.load(new InputStreamReader(resource.getInputStream(), StandardCharsets.UTF_8));
                }
            }
        } catch (IOException e) {
            LOGGER.error(e.getMessage(), e);
        }
        return properties;
    }

    public static String get(String key) {
        return PROPERTIES.getProperty(key);
    }
}

 

 

END.

posted @ 2022-01-21 14:57  杨岂  阅读(5924)  评论(0编辑  收藏  举报