非@Controller类如何实现@Autowired注入的jpa仓库

在Spring boot+jpa项目中,遇到了一个类是普通的类,现在在类中想使用仓库来动态的存储读取的一些数据,如何使用 @Autowired注入这个仓库而不会抛出null指针异常呢,解决方法如下:
首先:使用@Autowired注入这个仓库。

    @Autowired
    private WaterRepository waterRepository;

其次,定义一个静态的类变量

   public static ExcelTestReadData data;

然后使用如下方式初始化这个类变量:

 @PostConstruct
    public void init(){
        data=this;
        data.waterRepository=this.waterRepository;

    }

这样就可以在非@Controller类中实现jpa仓库的注入,而不会抛出空指针异常。
注意:此方法类中必须有空的构造函数,否则仍然会抛出null指针异常。

你可能感兴趣的:(非@Controller类如何实现@Autowired注入的jpa仓库)