spring静态获得配置文件中的属性

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package com.example.demo;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.context.EnvironmentAware;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;

@Configuration
public class PropertiesBean implements EnvironmentAware, BeanPostProcessor {
    private static Log logger = LogFactory.getLog(PropertiesBean.class);
    private Environment environment;
    private static PropertiesBean propertiesBean;

    public PropertiesBean() {
        logger.info("Construct EnvironmentProperties");
        propertiesBean = this;
    }

    public static PropertiesBean getInstance() {
        return propertiesBean;
    }

    @Override
    public void setEnvironment(Environment environment) {
        this.environment = environment;
    }

    public Environment getEnvironment() {
        return this.environment;
    }

    public String[] getActiveProfiles() {
        return this.environment.getActiveProfiles();
    }

    public String[] getDefaultProfiles() {
        return this.environment.getDefaultProfiles();
    }

    public boolean acceptsProfiles(String... profiles) {
        return this.environment.acceptsProfiles(profiles);
    }

    public boolean containsProperty(String key) {
        return this.environment.containsProperty(key);
    }

    public String getProperty(String key) {
        return this.environment.getProperty(key);
    }

    public String getProperty(String key, String defaultValue) {
        return this.environment.getProperty(key, defaultValue);
    }

    public <T> T getProperty(String key, Class<T> targetType) {
        return this.environment.getProperty(key, targetType);
    }

    public <T> T getProperty(String key, Class<T> targetType, T defaultValue) {
        return this.environment.getProperty(key, targetType, defaultValue);
    }

    public String getRequiredProperty(String key) {
        return this.environment.getRequiredProperty(key);
    }

    public <T> T getRequiredProperty(String key, Class<T> targetType) throws IllegalStateException {
        return this.environment.getRequiredProperty(key, targetType);
    }

    public String resolvePlaceholders(String text) {
        return this.environment.resolvePlaceholders(text);
    }

    public String resolveRequiredPlaceholders(String text) {
        return this.environment.resolveRequiredPlaceholders(text);
    }
}

注:

实现 BeanPostProcessor 保证该配置类在spring容器初始化之前初始化,实现EnvironmentAware获得全局配置环境对象environment

配置文件:

 测试类:

package com.example.demo.service;

import cn.hutool.core.lang.Console;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.json.XML;
import com.alibaba.fastjson.JSONObject;
import com.example.demo.PropertiesBean;
import com.example.demo.dao.CmpOclOrderRepository;
import com.example.demo.dto.supp.BaseHospCstDto;
import com.example.demo.entry.ocl.CmpOclOrder;
import com.example.demo.entry.supp.BaseHospCst;
import com.example.demo.utils.ExcelUtilTest;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;


@Component
public class TestService {

    public static String string = PropertiesBean.getInstance().getProperty("conf.address.smp");

    static{
        Console.log("初始化静态配置属性-------------------------"+string);
    }

//    public void testProxy() {
//        System.out.println("-------我是需要被代理的方法------");
//    }
//
//    public void testProxy2() {
//        System.out.println("-------我是需要被代理的方法222------");
//    }
}

启动demo项目:

原文地址:https://www.cnblogs.com/guanxiaohe/p/11736573.html