在Spring MVC中使用工具类调用Service层时,Service类为null如何解决

因为平时在调用service层时都是在controller中,有配置扫描注入,spring会根据配置自动注入所依赖的服务层。

但因我们写的工具类不属于controller层,所以当所写接口需要调用服务层是,常常会为NULL。

下面就分享一个实践后可行的办法,如下图所示:
第一种:
@Component //申明为spring组件
public class TestUtils {
@Autowired
private TestService testService; //添加所需service的私有成员
private static TestUtils testUtils ; // 关键点1 静态初使化 一个工具类 这样是为了在spring初使化之前

public void setTestService(TestService  testService) {  
    this.testService = testService;  
}  

@PostConstruct     //关键二   通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作
public void init() {  
    testUtils = this;  
    testUtils.testService = this.testService;   // 初使化时将已静态化的testService实例化
}  

}

这样下面的代码中就可以通过 testUtils.testService 来调用service处理
第二种:
这里写图片描述
主要是:1.将此工具类加上@Component注解

2.将所需调用的服务类设置成静态属性,并通过方法直接将服务层设置成工具类自己的属性即可。


版权声明:本文为u012279452原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。