2012-05-21 1 views
1

첫 번째 봄 예제 코드를 실행했을 때이 오류가 발생했습니다. 봄처럼 보이지 않습니다org.springframework.beans.factory.NoSuchBeanDefinitionException

어떻게 든 콩을 재조정하지만 나는 이유를 모른다. 나는 bean 정의 파일을 만들고 거기에 하나의 bean을 추가했다.

그런 다음 해당 파일이 WEBINF 폴더에 있습니다. 어쨌든 이것은 아무 문제없이 작동해야하지만 외모는

입니다. 여기에 몇 가지 문제가 있습니다. 아래는 나의 bean 정의 파일과 JSP이다. 아무도 말해 줄 수 없다

내가 뭘 잘못하고 있니?

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
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.xsd"> 
<bean id="HelloSpring" class="com.spring.toby.HelloSpring"></bean> 

</beans> 

HelloSpring.java

package com.spring.toby; 

public class HelloSpring { 
public String sayHello(String name){ 
    return "Hello " + name; 
} 
} 

HelloSpring.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR" 
pageEncoding="EUC-KR"%> 
<%@ page import="org.springframework.context.ApplicationContext" %>  
<%@ page import="org.springframework.web.context.support.WebApplicationContextUtils" %>  
<%@ page import="com.spring.toby.HelloSpring" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"> 
<title>Insert title here</title> 
</head> 
<body> 
<% 
    ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(
    request.getSession().getServletContext()); 
    out.println("check"); 
    HelloSpring helloSpring = context.getBean(HelloSpring.class); 

    //out.println(helloSpring.sayHello("seho")); 
%> 
</body> 
</html> 

web.xml의

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee /web-app_2_5.xsd"> 

<!-- The definition of the Root Spring Container shared by all Servlets and Filters --> 
<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/spring/root-context.xml</param-value> 
</context-param> 

<!-- Creates the Spring Container shared by all Servlets and Filters --> 
<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

<!-- Processes application requests --> 
<servlet> 
    <servlet-name>appServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>appServlet</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

</web-app> 
,745 1,515,

여기 내 에러 로그

org.apache.jasper.JasperException이다 예외 라인 (17)

14 처리 JSP 페이지 /WEB-INF/views/hellospring.jsp를 발생 ApplicationContext의 컨텍스트 = WebApplicationContextUtils. getWebApplicationContext ( 15 : request.getSession(). getServletContext()); 16 : out.println ("check"); 17 : HelloSpring helloSpring = context.getBean (HelloSpring.class); 18 :
19 : //out.println(helloSpring.sayHello("seho "))); 20 %> 당신은는 contextConfigLocation에 applicationContext.xml를 추가 할 필요가

Stacktrace: 
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238) 
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262) 
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1157) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:927) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 

root cause 

org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [com.spring.toby.HelloSpring] is defined: expected single bean but found 0: 
    org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:271) 
    org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1101) 
    org.apache.jsp.WEB_002dINF.views.hellospring_jsp._jspService(hellospring_jsp.java:81) 
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238) 
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262) 
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1157) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:927) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
+1

올바른 컨텍스트 파일을 사용하고 있습니까? 'web.xml' pls의 내용을 게시하십시오. – vacuum

+0

web.xml을 추가했습니다. 오 ... 이제 알았습니다 .. applicationContext.xml을 context-param에 포함 시키시겠습니까? –

답변

3

또는 당신은 또한 XML 파일에서 <import:resource> 태그를 사용하여 다른 파일에서 빈 해상력을 가져올 수
<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/spring/root-context.xml, 
       /WEB-INF/spring/applicationContext.xml 
    </param-value> 
</context-param> 


제안

JSP가 아닌 컨트롤러 (서블릿, 컨트롤러 클래스 ..)에 논리를 두는 것이 좋습니다.

+0

음 .. 기본 STS에서 comtextconfiglocaton의 위치를 ​​알려주시겠습니까? –

+0

은 servletcontext.xml입니까? –

+1

web.xml에서 설정 위치를 지정해야합니다. 리스너가 시작될 때 언급 된 위치에서 config 파일을 찾습니다. 질문에 대답했기를 바랍니다. –

관련 문제