我试图了解如何在基于Spring MVC框架的Web应用程序中进行DI。
为此,我修改了 web.xml 。
<web-app ...>
<servlet>
<servlet-name>spring-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>spring-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
然后,我创建了 spring-dispatcher-servlet.xml :
<beans xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans">
<bean id="HandlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean name="/welcome.html" class="com.example.hellocontroller.HelloController"/>
<bean id="simpleUtil" class="com.example.util.SimpleUtil"/> ----->(1)
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
</beans>
以下是控制器类:
public class HelloController extends AbstractController {
@Autowired
private SimpleUtil simpleUtil; -------> (2)
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {
System.out.println("calling the method add(a,b) ");
simpleUtil.add(2, 3);
ModelAndView modelandview = new ModelAndView("HelloPage");
modelandview.addObject("welcomeMessage", "first Spring MVC Application");
return modelandview;
}
}
在spring-dispatcher-servlet.xml中我定义了各种bean,特别是在(1) - &gt; <bean name="simpleUtil" class="com.example.util.SimpleUtil"/>
现在,在控制器中我希望Spring框架注入这个bean,如(2)所示:
@Autowired
private SimpleUtil simpleUtil;
当我运行这个程序时,我得到NullPointerException,这意味着Spring没有注入依赖项。
我在这里做错了吗?如何使这项工作?
我的相关问题很少:
Q1)spring-dispatcher-servlet.xml
是否用作bean定义配置文件?如果没有,那么我在哪里提供我想要由Spring管理的bean定义文件?
Q2)Spring MVC的前端控制器如何知道Handling Mapping的bean id是什么? (在我们的例子中,给出的ID是“HandlingMapping”)。
答案 0 :(得分:1)
是spring-dispatcher-servlet.xml
用作bean定义配置文件,您需要在spring-dispatcher-servlet.xml中添加监听器,这是您需要在spring-dispatcher-servlet.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/application-config.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
现在在application-config.xml中你可以做你的DI 对于控制器配置,您需要再添加一个xml文件 有关完整示例,请在github中查看spring的登录示例