实现目标
- 定义个工具类,并在方法中调用本工程所在的接口服务,减少重复的代码片段,提高代码的复用率
实现
- 可以先想想下面的实现有没有问题
问题
- 主要问题
- 框架扫描不到,注入失败
- 注入的修饰static,空指针异常
- 接口类new方式--引入错误
优化方案
- 方案
- 让框架扫描到--@Component
- 注入的修饰去掉static,并使用java注解@PostConstruct初始化工具类对象并设置属性为static
- 接口类使用@Autowired注入
补充
- 在SpringMVC框架中,我们经常要使用@Autowired注解注入Service或者Mapper接口,在controller层中注入service接口,在service层中注入其它的service接口或者mapper接口都是可以的,但是如果我们要在我们自己封装的Utils工具类中或者非controller普通类中使用@Autowired注解注入Service或者Mapper接口,直接注入是不可能的,因为Utils使用了静态的方法,我们是无法直接使用非静态接口的。
- PostConstruct注解好多人以为是Spring提供的,其实是Java自己的注解。 Java中该注解的说明:@PostConstruct该注解被用来修饰一个非静态的void()方法。被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。