非Spring容器中的类里 读取yml配置文件(干货)

150 阅读1分钟

 背景:相信有一定工作经验的伙计们对配置的引入非常熟悉,但一般都是在spring初始化加载类的时候已经把配置注入进去。如下面几种场景:

1.xxxConfig配置类

@Component
@ConfigurationProperties(prefix = "xxx")
@PropertySource(value = { "classpath:generator.yml" })
public class xxxConfig{

}

2.xxxService业务层@Value注解

@Service
public class xxxService {

    @Value("${xxx.secretId:}")
    private String secretId;

    @Value("${xxx.secretKey:}")
    private String secretKey;

    @Value("${xxx.appId:}")
    private String appId;

}

我百度查了半天资料,没找到一个我们非常常见的开发场景的实际解决方案:例如在一个工具类(xxxUtils)里,用静态方法调用,这时候有个参数是从配置里直接获取的。花了点时间找出方法,跟大伙儿分享下,验证能用。直接上干货:

@Slf4j
public class xxxUtils {
    
    public static void sendSms(String phoneNum, String content) {
        Environment ev = SpringUtil.getBean(Environment.class);
        String env = ev.getProperty("spring.profiles.active");
        log.info("环境 :{}, 短信发送成功, 手机号 :{}, 短信内容 :{}", env,phoneNum, content);
    }

}