zoukankan      html  css  js  c++  java
  • 在静态工具类中注入 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;
        }
    
  • 相关阅读:
    [USACO18DEC]Fine Dining
    [USACO18DEC]Cowpatibility(容斥 or bitset优化暴力)
    [P2387魔法森林
    P4172 [WC2006]水管局长
    P2486 [SDOI2011]染色
    P3950部落冲突
    P4332三叉神经树
    莫比乌斯反演习题总结
    牛客 斐波那契数列问题的递归和动态规划3
    牛客 统计和生成所有不同的二叉树
  • 原文地址:https://www.cnblogs.com/chonghaojie/p/9431098.html
Copyright © 2011-2022 走看看