以前使用的静态注入的方法都是通过@PostConstruct来实现的。
方法可行,也挺方法,但是有一个问题就是会报sonar。
因为调用类的实例方法去给静态常量赋值是不允许的。
公司严格要求Sonar,禁止出现新增坏味道,所以这个方法必须改,而且在后期也要对历史代码进行修改。
查阅资料找到一个新的方法。新的思路为在容器初始化之后,对静态常量进行赋值。
@Component public class TableConfig implements ApplicationListener<ContextRefreshedEvent> { @Autowired private ApplicationContext applicationContext; @Override public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) { DataTableCleanUtil.setDbUnitCleanTableDao((DBUnitCleanTableDao) applicationContext.getBean("DBUnitCleanTableDao")); } }
调用DataTableCleanUtil的set方法来注入,这样就不会出现坏味道了
来源:51CTO
作者:血液里的烈马
链接:https://blog.csdn.net/qq_40952927/article/details/100084687