2015-05-22 4 views
-1

я разработал серверную программу с помощью Spring MVC и спящий режим, но я получаю сообщение об ошибке во время выполненияorg.springframework.beans.factory.BeanCreationException и org.springframework.beans.factory.NoUniqueBeanDefinitionException

Это сервлет-контекст .xml:

<?xml version="1.0" encoding="UTF-8"?> 
<beans:beans xmlns="http://www.springframework.org/schema/mvc" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc.xsd 
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context.xsd" 
    xmlns:tx="http://www.springframework.org/schema/tx 
    http://www.springframework.org/schema/tx/spring-tx.xsd"> 

    <!-- DispatcherServlet Context: defines this servlet's request-processing 
     infrastructure --> 

    <!-- Enables the Spring MVC @Controller programming model --> 
    <annotation-driven /> 

    <!-- Handles HTTP GET requests for /resources/** by efficiently serving 
     up static resources in the ${webappRoot}/resources directory --> 
    <resources mapping="/resources/**" location="/resources/" /> 

    <!-- Resolves views selected for rendering by @Controllers to .jsp resources 
     in the /WEB-INF/views directory --> 
    <beans:bean 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <beans:property name="prefix" value="/WEB-INF/views/" /> 
     <beans:property name="suffix" value=".jsp" /> 
    </beans:bean> 

    <context:component-scan base-package="kr.ac.jbnu.jinggumdari" /> 
    <context:annotation-config /> 

    <beans:bean 
     class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" /> 

    <beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
     destroy-method="close"> 
     <beans:property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
     <beans:property name="url" 
      value="jdbc:mysql://localhost:3306/jinggumdari" /> 
     <beans:property name="username" value="root" /> 
     <beans:property name="password" value="mysql1234" /> 
    </beans:bean> 

    <!-- Hibernate 4 SessionFactory Bean definition --> 
    <beans:bean id="hibernate4AnnotatedSessionFactory" 
     class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
     <beans:property name="dataSource" ref="dataSource" /> 
     <beans:property name="annotatedClasses"> 
      <beans:list> 
       <beans:value>kr.ac.jbnu.jinggumdari.model.Member</beans:value> 
      </beans:list> 
     </beans:property> 
     <beans:property name="hibernateProperties"> 
      <beans:props> 
       <beans:prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect 
       </beans:prop> 
       <beans:prop key="hibernate.show_sql">true</beans:prop> 
      </beans:props> 
     </beans:property> 
    </beans:bean> 

    <beans:bean id="memberDAO" class="kr.ac.jbnu.jinggumdari.DAO.MemberDAOImpl"> 
     <beans:property name="sessionFactory" 
      ref="hibernate4AnnotatedSessionFactory" /> 
    </beans:bean> 
    <beans:bean id="memberService" 
     class="kr.ac.jbnu.jinggumdari.serviceImplementation.MemberManageServiceImpl"> 
     <beans:property name="memberDAO" ref="memberDAO"></beans:property> 
    </beans:bean> 



    <beans:bean id="transactionManager" 
     class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
     <beans:property name="sessionFactory" 
      ref="hibernate4AnnotatedSessionFactory" /> 
    </beans:bean> 
</beans:beans> 

и это сообщение об ошибке

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jinggumdariController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private kr.ac.jbnu.jinggumdari.service.MemberManageService kr.ac.jbnu.jinggumdari.controller.JinggumdariController.MemberManager; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [kr.ac.jbnu.jinggumdari.service.MemberManageService] is defined: expected single matching bean but found 2: memberManageServiceImpl,memberService 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1202) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) 
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:663) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:629) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:677) 
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:548) 
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:489) 
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) 
    at javax.servlet.GenericServlet.init(GenericServlet.java:158) 
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5262) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5550) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

и мой код:

package kr.ac.jbnu.jinggumdari.controller; 

import java.text.DateFormat; 
import java.util.Date; 
import java.util.Locale; 

import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import kr.ac.jbnu.jinggumdari.model.Member; 
import kr.ac.jbnu.jinggumdari.service.MemberManageService; 

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.ui.Model; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.RequestParam; 
import org.springframework.web.bind.annotation.ResponseBody; 

/** 
* Handles requests for the application home page. 
*/ 
@Controller 
public class JinggumdariController { 

    private static final Logger logger = LoggerFactory.getLogger(JinggumdariController.class); 

    @Autowired 
    private MemberManageService MemberManager; 

    private boolean isSuccess; 
    /** 
    * Simply selects the home view to render by returning its name. 
    */ 
    @RequestMapping(value = "/", method = RequestMethod.GET) 
    public String home(Locale locale, Model model) { 
     logger.info("Welcome home! The client locale is {}.", locale); 

     Date date = new Date(); 
     DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale); 

     String formattedDate = dateFormat.format(date); 

     model.addAttribute("serverTime", formattedDate); 

     return "home"; 
    } 

    @RequestMapping(value = "/member/signIn", method = RequestMethod.GET) 
    public @ResponseBody boolean signIn(@RequestParam("email") String email, 
      @RequestParam("password") String password, 
      HttpServletRequest request, HttpServletResponse response) { 
     isSuccess = false; 
     Member member = new Member(email, password); 

     isSuccess = MemberManager.addMember(member); 
     return isSuccess; 
    } 

    @RequestMapping(value = "/member/getInfo", method = RequestMethod.GET) 
    public @ResponseBody Member getMember(@RequestParam("email") String email) { 
     Member member = MemberManager.getMember(email); 
     return member; 
    } 

    //출력 예시 코드 
    @RequestMapping(value = "/test", method = RequestMethod.POST) 
    public @ResponseBody String test2() { 
     return "이젠 이걸 쓸거임"; 
    } 
} 
package kr.ac.jbnu.jinggumdari.service; 

import kr.ac.jbnu.jinggumdari.model.Member; 

public interface MemberManageService { 
    public boolean addMember(Member member); 
    public boolean modifyMember(Member member); 
    public boolean removeMember(String email); 
    public Member getMember(String email); 
} 
package kr.ac.jbnu.jinggumdari.serviceImplementation; 

    import kr.ac.jbnu.jinggumdari.DAO.MemberDAO; 
    import kr.ac.jbnu.jinggumdari.model.Member; 
    import kr.ac.jbnu.jinggumdari.service.MemberManageService; 

    import org.springframework.stereotype.Service; 
    import org.springframework.transaction.annotation.Transactional; 

    @Service 
    public class MemberManageServiceImpl implements MemberManageService{ 
     private MemberDAO memberDAO; 

     public void setMemberDAO(MemberDAO memberDAO) { 
      this.memberDAO = memberDAO; 
     } 

     @Override 
     @Transactional 
     public boolean addMember(Member member) { 
      return memberDAO.addMember(member); 
     } 

     @Override 
     @Transactional 
     public boolean modifyMember(Member member) { 
      return memberDAO.modifyMember(member); 
     } 

     @Override 
     @Transactional 
     public boolean removeMember(String email) { 
      return removeMember(email); 
     } 

     @Override 
     @Transactional 
     public Member getMember(String email) { 
      return memberDAO.getMember(email); 
     } 
    } 

ответ

2

Исключение довольно ясно, expected single matching bean but found 2: memberManageServiceImpl,memberService

Вы создаете фасоль в вашем xml (имеющий идентификатор: memberService), а также с помощью аннотаций @Service (имеющий идентификатор: memberManageServiceImpl). Вам нужно решить, какой из них вы хотите, и удалить другое.

+0

спасибо! Я могу решить эту проблему в соответствии с вашим ответом. – Rect

+0

@Rect, если он решил вашу проблему, вы можете [принять] (http://meta.stackoverflow.com/questions/251078/how-to-update-and-accept-answers) его. –

Смежные вопросы