在静态工具类中注入Service的解决方案

由于工具类中方法一般都是静态的,所以要求该属性也要是静态的(Service)。
但是由于Spring/SpringBoot正常情况下不能支持注入静态属性(会报空指针异常)。
主要原因在于:Spring的依赖注入实际上是依赖于Set方法进行注入值的,Spring是基于对象层面的依赖注入,而静态属性/静态变量实际上是属于类的。
解决方案一:
给当前的工具类加上@Component,使其成为一个bean对象
声明一个静态的属性(加上注解@Autowired),一个非静态的属性。
声明一个返回值为void并且不能抛出异常的方法,在其中将非静态属性赋值给静态属性。该方法上加上注解@PostConstruct
这样就将service的值注入了进来。示例代码如下:

@Component
public class BaseUtil {

    @Autowired
    private ISystemOrganService systemOrganServiceTemp;
    @Autowired
    private ISystemUserService systemUserServiceTemp;
    private static ISystemOrganService systemOrganService;
    private static ISystemUserService systemUserService;
    @PostConstruct
    public void init(){
        systemOrganService = systemOrganServiceTemp;
        systemUserService = systemUserServiceTemp;
    }

转载于:https://www.cnblogs.com/chonghaojie/p/9431098.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值