我正在尝试使用 Spring MVC 框架实现一个 WebApp。到目前为止,HelloWorld 还没有问题。现在我想从数据库中读取一些数据。为此,我实现了一个名为 DataProvider 的类来处理数据库访问。
现在我将此 DataProvider 类添加到我的 HelloWorld 类中,这是我的 Controller 。一旦我这样做,我就会得到以下异常:
java.lang.IllegalStateException: ApplicationObjectSupport instance [de.bpm.keza.ui.srv.kennzahlen.controller.HelloController@7361b599] does not run in an ApplicationContext
这是我的 Dispatcher-Servlet:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package="de.bpm.keza.ui.srv.kennzahlen" />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/templates/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- Externe Konfigurationsdateien -->
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/BPM_KORE_ALIAS"/>
</bean>
<!-- DataProvider -->
<bean id="dataProvider" class="de.bpm.keza.ui.srv.kennzahlen.data.DataProvider">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<!-- KEZA Dashboard -->
<property name="koreVorgaengeGesamtDataSql">
<value>
select
*
from DE_BPM_KORE_DBRD
</value>
</property>
</bean>
</beans>
这是我的HelloController.java
@Controller
public class HelloController extends WebContentGenerator {
DataProvider daPro = ((DataProvider) getWebApplicationContext().getBean("dataProvider", DataProvider.class));
@RequestMapping("/hello")
public ModelAndView helloWorld() {
String message = "Hello World, Spring 3.0!";
return new ModelAndView("hello", "message", message);
}
@RequestMapping("/bye")
public ModelAndView byeWorld() {
String message = "Goodbye World, Spring 3.0!";
// daPro.getVorgaengeGesamtByArkNr();
return new ModelAndView("hello", "message", message);
}
}
我在这里做错了什么?
最佳答案
您有两种方法来访问该 bean。
DataProvider daPro = ((DataProvider) getWebApplicationContext().getBean("dataProvider", DataProvider.class));
将上面的代码替换为
DataProvider dataProvider;
或者
@Autowired
DataProvider dataProvider;
关于java - Spring MVC : Controller does not run in an ApplicationContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31406807/