静态方法中调用非静态方法!

Java普通Utils 类(非 Controller、Service)注入 mapper 为 null

需要将 Utils 类添加 @Component 注解注入 Spring 容器,添加 init () 方法,并用注解 @PostConstruct 注解修饰方法, 被 @PostConstruct 修饰的方法会在服务器加载 Servle 的时候运行,并且只会被服务器执行一次。PostConstruct 在构造函数之后执行,init () 方法之前执行。PreDestroy()方法在 destroy () 方法执行执行之后执行, 结果能注入成功!
 

@Component
public class HworkUserRoleUtil {



 @Resource
    private SysRegionMapper sysRegionMapper;

    public static HworkUserRoleUtil hworkUserRoleUtil;

    @PostConstruct
    public void init() {
        hworkUserRoleUtil = this;
        hworkUserRoleUtil.sysRegionMapper = this.sysRegionMapper;
    }




public static void getAreaByQz(){

// 写法1
List sysRegionPoList = hworkUserRoleUtil.getSysRegion(code.substring(0, 4));
// 写法2
List sysRegionPoList = new HworkUserRoleUtil().getSysRegion(code.substring(0, 4));
}



 /**
     * 获取大区编码
     *
     * @param areaCode
     * @return
     */
    public List getSysRegion(String areaCode) {
        List sysRegionPos = hworkUserRoleUtil.sysRegionMapper.selectList(new LambdaQueryWrapper()
                .eq(SysRegionPo::getAreaCode, areaCode).eq(SysRegionPo::getIsDeleted, CommonConst.INT_NO));
        return sysRegionPos;
    }

}

你可能感兴趣的:(java,spring,开发语言)