背景:相信有一定工作经验的伙计们对配置的引入非常熟悉,但一般都是在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);
}
}