java - Spring MVC : Controller does not run in an ApplicationContext

标签 java xml spring spring-mvc

我正在尝试使用 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/

相关文章:

java - 如何找出 OpenCV 中匹配的好坏?

java - Spring 。在 XML 上的根元素之后添加子元素

java - Keycloak无法获取访问 token

java - 生成6位随机数

java - 更改(重命名)jung 中的顶点标签

XCCDF 上的 C# Linq-to-XML

java - 替换 JAR 文件中的 XML 文件

.net - 在 .NET 中使用 XmlReader 转义 XML 实体?

java - 有没有什么方法可以使用 spring 来保护 .xml 中的密码

java - 用java实现RSA算法