在一些工具类中可能会依赖 service 层的对象,一般情况下工具类都是使用静态方法,对应的成员变量也需要声明为静态的,此时如果直接使用 @Autowired 进行依赖注入,在方法调用的时候会报 NullpointerException.
@Component
public final class DocImageUtils {
@Autowired
private static ImageFileDao imageFileDao;
@Autowired
private static DocImageFileDao docImageFileDao;
}
为实现
@Autowired 静态注入,可以使用 setter 方法注入,如下:
@Component
public final class DocImageUtils {
private static ImageFileDao imageFileDao;
private static DocImageFileDao docImageFileDao;
@Autowired(required = true)
public void setDocImageFileDao(DocImageFileDao docImageFileDao) {
DocImageUtils.docImageFileDao = docImageFileDao;
}
@Autowired(required = true)
public void setImageFileDao(ImageFileDao imageFileDao) {
DocImageUtils.imageFileDao = imageFileDao;
}
}
这样在工具类方法中就可以正常使用工具类中的静态成员变量.