问题引入
- set方式依赖注入
在经典的JAVAWEB三层中,Servlet去调用Service实现类,进行逻辑操作,学习Spring以后将最初的new 对象操作变成了依赖注入方式,以下是set方式注入代码:
- 运行然后报空指针异常,service为Null,是因为注入失败?并不是。
- 原因详解:其实注入成功了,但是在浏览器发送请求时,请求的是WEB容器中的Userservlet而非Spring容器中的那个Userservlet,所以报NULL指针异常!
解决方案
- servlet的init初始化方法中获取springIOC容器中的对象(原理:其实就是在WEB容器中的servlet的init方法中去主动的getBean即获取usi对象)
- 用Spring注解自动装配进行依赖注入
(原理:注解本身就是在WEB容器中那个servlet上标注的,他代替了springXML所配置的用于servlet依赖注入的Bean,注解会自动去IOC容器中寻找符合该对象的Bean给WEB容器中的这个servlet进行依赖注入,该注解默认是bytype,也可以自己设置其他方式)