Q:编写代码时遇到原始代码的一个遗留问题。项目使用的是springboot框架,由于接入硬件sdk,原始代码主动创建(new)了一个含有回调函数的类,类中含有静态资源,所以原始代码没有将该类注册为spring的bean对象。但由于后期在修改代码时需要让该类读取application.yml中的数据,不在spring容器中的对象且主动new出来的对象无法使用spring的依赖注入,即@Value失效。
A:我的解决方案是创建一个helper类,并注册为spring的bean(即加上@Compoment注解),然后通过依赖注入配置文件中的数据,再通过@PostConstruct将类普通属性传递到静态属性上。
Trips:
1.构造函数、@Autowired、@PostConstruct执行顺序
构造函数 > @Autowired > @PostConstruct
2.所有主动new出来的对象都不会进行依赖注入。
@Component
public class StaticParamsHelper {
@Value