背景:要在static的类中访问yml中的配置。直接在静态类中使用@Value是获取不到配置
解决方案:通过再工具类内部构造静态得setter方法,外部类进行调用。
1.yml定义
2.ServiceClass类,调用工具类的静态方法
public class ServiceClass {
@Value("${fileFormatConfig.picture}")
private String PICTURE_FORMAT;
@Value("${fileFormatConfig.video}")
private String VIDEO_FORMAT;
@Value("${fileFormatConfig.audio}")
private String AUDIO_FORMAT;
public void startDetection() {
//调用静态工具类
TestUtils.init(PICTURE_FORMAT, VIDEO_FORMAT, AUDIO_FORMAT);
TestUtils.originalTextDetection();
}
}
3.Utils工具类
public class TestUtils {
private static String PICTURE_FORMAT;
private static String VIDEO_FORMAT;
private static String AUDIO_FORMAT;
// 静态setter,由外部类的某个方法(如@PostConstruct)调用
public static void init(String pictureFormat, String videoFormat, String audioFormat) {
PICTURE_FORMAT = pictureFormat;
VIDEO_FORMAT = videoFormat;
AUDIO_FORMAT = audioFormat;
}
public static void originalTextDetection() {
System.out.println(PICTURE_FORMAT);
System.out.println(VIDEO_FORMAT);
System.out.println(AUDIO_FORMAT);
}
}