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

以前使用的静态注入的方法都是通过@PostConstruct来实现的。

方法可行,也挺方便,但是有一个问题就是会报sonar。

因为调用类的实例方法去给静态常量赋值是不允许的。

公司严格要求Sonar,禁止出现新增坏味道,所以这个方法必须改,而且在后期也要对历史代码进行修改。

查阅资料找到一个新的方法。新的思路为在容器初始化之后,对静态常量进行赋值。

@Component
public class TableConfig implements ApplicationListener {
   @Autowired
   private ApplicationContext applicationContext;
   @Override
   public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
      DataTableCleanUtil.setDbUnitCleanTableDao((DBUnitCleanTableDao) applicationContext.getBean("DBUnitCleanTableDao"));
   }
}

调用DataTableCleanUtil的set方法来注入,这样就不会出现坏味道了

你可能感兴趣的:(Java)