以前使用的静态注入的方法都是通过@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方法来注入,这样就不会出现坏味道了
来源:https://blog.csdn.net/qq_40952927/article/details/100084687