问题描述:想要建一个工具类进行数据同步,其中要用到service层或dao层的数据查询接口,正常构建工具类,用@Autowired注解导入service层。在项目测试时报空指针异常,发现是service层接口注入失败。

 

解决方法:将你的工具类变成spring容器:1.将你的工具类所在的包在springmvc文件中配置扫描路径,和controller层、service层、dao层一样就可以:<context:component-scan  back-package="包名“/>

在工具类上添加@Component注解,并且静态初始化当前类,在初始化方法上加上@PostConstruct注解,在调用service层或其他注入的bean时用静态变量加类名的方式:具体看如下代码:

@Component
public class DataUpload{

   @Autowired
   IAddressService addressService;


   //静态初始化当前类
   private static DataUpload dataUpload;
   
   //在方法上加上注解@PostConstruct,这样方法就会在bean初始化之后被spring容器执行
   @PostConstruct
   public void init(){
   //声明的静态类=this
        dataUpload=this
}
//service层或其他注入bean的调用
 IpAddress IPAddress= dataUpload.addressService.getOne();

这样就可以在工具类里面调用其他的注入打的bean了。

Logo

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

更多推荐