关于Spring静态注入属性的另一种优雅的方法

て烟熏妆下的殇ゞ 提交于 2019-11-28 16:09:15

以前使用的静态注入的方法都是通过@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方法来注入,这样就不会出现坏味道了

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!