转载自博主大牛的文章特此说明

在Spring MVC中,Controller中使用service只需使用注解@Resource/@Autowired就行,但是一般类(即不使用@Controller注解的类)要用到service时,会提示找不到注解的属性值,所以会是null,就算调用service的类中有@Component注解加入了Spring容器管理,也还是null.(Utils工具类是静态方法,注解注入的service和mapper是非静态的,所以不行,即使把service和mapper注入为static静态的也还是会报空指针)

网上好多解决方式,我尝试了一种比较好用,操作也简单,在此做一下记录:

@Component 
public class TestUtils {
    @Autowired
    private MyService myService;
    
    @Autowired
    private MyMapper myMapper;
    
    public static TestUtils testUtils;
    
    @PostConstruct
    public void init() {    
        testUtils = this;
    } 
    
    //utils工具类中使用service和mapper接口的方法例子,用"testUtils.xxx.方法" 就可以了      
    public static void test(int id){
    	//掉service接口可能还需要后续的mapper接口实现等操作,本人没测试(应该没问题);
    	testUtils.itemService.queryListById(id);
    	//直接掉mapper接口是没问题的,不会报空指针
        testUtils.itemMapper.queryUserById(id);
    }
}

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐