工具类中常常会编写一个static方法直接供外部调用,使用@Autowired注解就会为null,这是因为工具类的启动顺序问题,在生成此类时执行顺序会直接执行方法,此时工具类中的service或者是Mapper都是空指针状态,如果需要使用的话需要在调用方法后续进行一次注入,就可以使用Mapper或者是Service了。如下代码所示。
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.x.x.dao.SysUserMapper;
import com.x.x.entity.SysUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.List;
@Component
public class UserLoginCheckTool {
@Autowired
private SysUserMapper sysUserMapper;
private static UserLoginCheckTool userLoginCheckTool;
@PostConstruct
public void init() {
userLoginCheckTool = this;
userLoginCheckTool.sysUserMapper = this.sysUserMapper;
}
public static SysUser findAdmin(String token) {
QueryWrapper<SysUser> queryWrapper = new QueryWrapper<SysUser>();
queryWrapper.eq("token", token);
return userLoginCheckTool.sysUserMapper.selectOne(queryWrapper);
}
}