service注入为null+spring事务不能使用静态方法的学习笔记

在创建工具类并进行数据库操作时,遇到Service和Mapper注入为null的问题,以及Spring @Transactional注解无法与静态方法配合使用导致线上测试失败。解决方案包括使用SpringUtil获取Bean以及将方法改为非静态。后续需要进一步研究这个问题。
摘要由CSDN通过智能技术生成

需求:

创建一个工具类,查询计算数据库的某项值,并编写一下测试验证计算结果是否正确。

问题1:

用到xxService.getMap(QueryWrapper<T>)和xxMapper.xx()方法,所以要注入service和mapper,

public class BalanceUtil {
    private IChargeService iChargeService;
    private PriceMapper priceMapper;

    //TODO
}

发现,运行本地测试时,报空指针异常,iChargeServise和priceMapper都为null。

百度获得解决方法如下(未po的具体方法是static的):

@Component
public class BalanceUtil {
    private static IChargeService iChargeService;
    private static PriceMapper priceMapper;

    @Autowired
    public void setiChargeService(IChargeService iChargeService) {
        BalanceUtil.iChargeService = iChargeService;
    }

    @Resource
    public void setPriceMapper(PriceMapper priceMapper) {
        BalanceUtil.priceMapper = priceMapper;
    }
}

 再运行本地测试,测试通

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值