2016-06-16 2 views
0

내 코드를 실행할 때 오류가 있습니다.자동 종속 종속성의 주입이 실패했습니다. 중첩 예외는 org.springframework.beans.factory.BeanCreationException : 필드를 autowire 수 없습니다.

오류 메시지 :

형 예외 보고서

서블릿 MVC - 디스패처

메시지 Servlet.init()는 예외를 서버는 그것을 을 방지 내부 오류가 발생

설명 던져 이 요청을 이행하지 못했습니다.

예외

javax.servlet.ServletException : 서블릿 MVC - 디스패처 Servlet.init()는 예외 org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:502) 조직 던져. apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:79) org.apache.catalina.valves.AbstractAccessLogValve.invoke (AbstractAccessLogValve.java:616) org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter. java : 528) org.apache.coyote.http11.AbstractHttp11Processor.process (AbstractHttp11Processor.java:1099) org. apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process (AbstractProtocol.java:672) org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java:1520) org.apache.tomcat.util.net. NioEndpoint $ SocketProcessor.run (NioEndpoint.java:1476) java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) 조직 .apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) java.lang.Thread.run (Thread.java:745)

org.springframework.beans.factory.BeanCreationException : 오류 이름이 'tipoSanguineoControll 인 빈 작성 er ': 자동 주입 종속성 실패. 상자의 예외는 org.springframework.beans.factory.BeanCreationException입니다 : 수 없습니다 자동으로 묶어 필드 : 개인 br.inf.datus.ifisio.service.TipoSanguineoService br.inf.datus.ifisio.controller.TipoSanguineoController.tipoSanguineoService; 상자의 예외는 org.springframework.beans.factory.BeanCreationException입니다 : 오류 이름을 가진 콩을 만드는 'tipoSanguineoServiceImpl'파일 에 정의 [D : \ projetos \ ifisio \ 대상 \ ifisio \ WEB-INF \ 클래스 \ BR \ INF \ datus \ ifisio \ service \ TipoSanguineoServiceImpl.class] : 빈 인스턴스화에 실패했습니다. 중첩 예외는 org.springframework.beans.BeanInstantiationException : 실패 : [br.inf.datus.ifisio.service.TipoSanguineoServiceImpl] 인스턴스화 : 아니요 기본 생성자가 발견되었습니다; . br.inf.datus.ifisio.service.TipoSanguineoServiceImpl() org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues ​​(AutowiredAnnotationBeanPostProcessor.java:334) org.springframework : 중첩 예외이다 java.lang.NoSuchMethodException . AbstractAutowireCapableBeanFactory.java : 1202) 자바 : 537) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:476) org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java:303) 조직. springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:230) org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:299) org.springframework.beans.factory.support. AbstractBeanFactory.getBean (AbstractBeanFactory.java:194) org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:755) org.springframework.context.support.AbstractApplicationContext.fin ishBeanFactoryInitialization (AbstractApplicationContext.java:757) org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:480) org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext (FrameworkServlet.java:663) org.springframework .web.servlet.FrameworkServlet.createWebApplicationContext (FrameworkServlet.java:629) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext (FrameworkServlet.java:677) org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext (FrameworkServlet.java : 548) org.springframework.web.servlet.FrameworkServlet.initServletBean (FrameworkServlet.java:489) org.springframework.web.servlet.HttpServletBean.init (HttpServletBean.java:13) 6) javax.servlet.GenericServlet.init (GenericServlet.java:158) org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:502) org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve .java : 79) org.apache.catalina.valves.AbstractAccessLogValve.invoke (AbstractAccessLogValve.java:616) org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:528) org.apache.coyote. (AbstractProtocol.java:672) org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint. AbstractHttp. java : 1520) org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run (NioEndpoint.java:1476) java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) org.apache .tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) java.lang.Thread.run (Thread.java:745)

근본 원인

된 org.springframework.beans. factory.BeanCreationException : 할 수 없습니다 autowire 필드 : 개인 br.inf.datus.ifisio.service.TipoSanguineoService br.inf.datus.ifisio.controller.TipoSanguineoControlle r.tipoSanguineoService; 상자의 예외는 org.springframework.beans.factory.BeanCreationException입니다 : 오류 이름을 가진 콩을 만드는 'tipoSanguineoServiceImpl'파일 에 정의 [D : \ projetos \ ifisio \ 대상 \ ifisio \ WEB-INF \ 클래스 \ BR \ INF \ datus \ ifisio \ service \ TipoSanguineoServiceImpl.class] : 빈 인스턴스화에 실패했습니다. 중첩 예외는 org.springframework.beans.BeanInstantiationException : 실패 : [br.inf.datus.ifisio.service.TipoSanguineoServiceImpl] 인스턴스화 : 아니요 기본 생성자가 발견되었습니다; 중첩 예외는 java.lang.NoSuchMethodException : br.inf.datus.ifisio.service.TipoSanguineoServiceImpl.() org.springframework.beans.factory입니다.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject (AutowiredAnnotationBeanPostProcessor.java:561) org.springframework.beans.factory.annotation.InjectionMetadata.inject (InjectionMetadata.java:88) org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues ​​(AutowiredAnnotationBeanPostProcessor.java:331) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean (AbstractAutowireCapableBeanFactory.java:1202) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:537) 조직 .springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:476) org.springframework.be ans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java:303) org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:230) org.springframework.beans.factory.support.AbstractBeanFactory .doGetBean (AbstractBeanFactory.java:299) org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:194) org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:755) org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:757) org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:480),363,210 org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext (FrameworkServlet.java:663) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext (FrameworkServlet.java:629) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext (FrameworkServlet.java:677) org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext (FrameworkServlet.java:548) org.springframework.web.servlet.FrameworkServlet.initServletBean (FrameworkServlet.java:489) org.springframework. (HttpServletBean.java:136) (org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:502))org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:79) org.apache.catalina.valves.AbstractAccessLogValve.invoke (AbstractAccessLogValve.java:616) org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:528) org.apache.coyote.http11.AbstractHttp11Processor.process (AbstractHttp11Processor.java:1099) org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process (AbstractProtocol.java:672) org.apache. (NioEndpoint.java:1520) org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run (NioEndpoint.java:1476) java.util.concurrent.ThreadPoolExecutor. runWorker (ThreadPoolExecutor.java:1142) java.util.concurrent.ThreadPoolExecutor $ Wo rker.run (ThreadPoolExecutor.java:617) org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) java.lang.Thread.run (Thread.java:745)

내 파일 :

web.xml에 :

<web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 

<display-name>x</display-name> 

<servlet> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 
</web-app> 

MVC-디스패처 - 서블릿.XML :

<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:tx="http://www.springframework.org/schema/tx" 
     xmlns:mvc="http://www.springframework.org/schema/mvc" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
          http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd 
          http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd 
          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 

    <context:annotation-config/> 

    <context:component-scan base-package="br.inf.datus.ifisio"/> 

    <mvc:annotation-driven/> 

    <!-- Database properties --> 
    <context:property-placeholder location="classpath:application.properties"/> 

    <!-- Resource location to load JS, CSS, Images etc --> 
    <mvc:resources mapping="/resources/**" location="/resources/"/> 

    <!--Prevent browsers from caching contents except the static resources content--> 
    <mvc:interceptors> 
    <bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> 
     <property name="paramName" value="lang"/> 
    </bean> 
    <mvc:interceptor> 
     <mvc:mapping path="/**"/> 
     <mvc:exclude-mapping path="/resources/**"/> 
     <bean id="webContentInterceptor" class="org.springframework.web.servlet.mvc.WebContentInterceptor"> 
     <property name="cacheSeconds" value="0"/> 
     <property name="useExpiresHeader" value="true"/> 
     <property name="useCacheControlHeader" value="true"/> 
     <property name="useCacheControlNoStore" value="true"/> 
     </bean> 
    </mvc:interceptor> 
    </mvc:interceptors> 

    <!-- View Resolver --> 
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/WEB-INF/views/"/> 
    <property name="suffix" value=".jsp"/> 
    </bean> 

    <!-- DataSource --> 
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> 
    <property name="driverClass" value="${db.driverClassName}"/> 
    <property name="jdbcUrl" value="${db.url}"/> 
    <property name="user" value="${db.username}"/> 
    <property name="password" value="${db.password}"/> 

    <property name="acquireIncrement" value="${conn.acquireIncrement}"/> 
    <property name="minPoolSize" value="${conn.minPoolSize}"/> 
    <property name="maxPoolSize" value="${conn.maxPoolSize}"/> 
    <property name="maxIdleTime" value="${conn.maxIdleTime}"/> 
    </bean> 

    <!-- Hibernate SessionFactory --> 
    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource"/> 
    <property name="hibernateProperties"> 
     <props> 
     <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
     <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> 
     <prop key="hibernate.format_sql">${hibernate.format_sql}</prop> 
     <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> 
     </props> 
    </property> 
    <property name="packagesToScan" value="br.inf.datus.ifisio.persistence.entity"/> 
    </bean> 

    <!-- Transaction --> 
    <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory"/> 
    </bean> 

    <tx:annotation-driven transaction-manager="transactionManager"/> 
</beans> 

GenericDaoImpl :

package br.inf.datus.ifisio.persistence.dao; 

import java.io.Serializable; 
import java.lang.reflect.ParameterizedType; 
import java.lang.reflect.Type; 
import java.util.List; 

import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Repository; 

import br.inf.datus.ifisio.persistence.dao.GenericDao; 

@Repository 
public abstract class GenericDaoImpl<E, K extends Serializable> implements GenericDao<E, K> { 

    @Autowired 
    private SessionFactory sessionFactory; 

    protected Class<? extends E> daoType; 

    @SuppressWarnings("unchecked") 
    public GenericDaoImpl() { 
     Type t = getClass().getGenericSuperclass(); 
     ParameterizedType pt = (ParameterizedType) t; 
     daoType = (Class) pt.getActualTypeArguments()[0]; 
    } 

    protected Session currentSession() { 
     return sessionFactory.getCurrentSession(); 
    } 

    @Override 
    public void add(E entity) { 
     currentSession().save(entity); 
    } 

    @Override 
    @SuppressWarnings("unchecked") 
    public E findById(K key) { 
     return (E) currentSession().get(daoType, key); 
    } 

    @Override 
    @SuppressWarnings("unchecked") 
    public List<E> getAll() { 
     return currentSession().createCriteria(daoType).list(); 
    } 

    @Override 
    public void update(E entity) { 
     currentSession().saveOrUpdate(entity); 
    } 

    @Override 
    public void remove(E entity) { 
     currentSession().delete(entity); 
    } 

    @Override 
    public void saveOrUpdate(E entity) { 
     currentSession().saveOrUpdate(entity); 
    } 
} 

GenericServiceImpl :

package br.inf.datus.ifisio.service; 

import java.util.List; 

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

import br.inf.datus.ifisio.persistence.dao.GenericDao; 

@Service 
public abstract class GenericServiceImpl<E, K> implements GenericService<E, K> { 

    private GenericDao<E, K> genericDao; 

    public GenericServiceImpl(GenericDao<E,K> genericDao) { 
     this.genericDao=genericDao; 
    } 

    public GenericServiceImpl() { 

    } 

    @Override 
    @Transactional(propagation = Propagation.REQUIRED) 
    public void add(E entity) { 
     genericDao.add(entity); 
    } 

    @Override 
    @Transactional(propagation = Propagation.REQUIRED, readOnly = true) 
    public E findById(K id) { 
     return genericDao.findById(id); 
    } 

    @Override 
    @Transactional(propagation = Propagation.REQUIRED, readOnly = true) 
    public List<E> getAll() { 
     return genericDao.getAll(); 
    } 

    @Override 
    @Transactional(propagation = Propagation.REQUIRED) 
    public void remove(E entity) { 
     genericDao.remove(entity); 
    } 

    @Override 
    @Transactional(propagation = Propagation.REQUIRED) 
    public void saveOrUpdate(E entity) { 
     genericDao.saveOrUpdate(entity); 
    } 

    @Override 
    @Transactional(propagation = Propagation.REQUIRED) 
    public void update(E entity) { 
     genericDao.update(entity); 
    } 
} 

TipoSanguineoDaoImpl :

package br.inf.datus.ifisio.persistence.dao; 

import br.inf.datus.ifisio.persistence.entity.TipoSanguineo; 
import org.springframework.stereotype.Repository; 

@Repository 
public class TipoSanguineoDaoImpl extends GenericDaoImpl<TipoSanguineo, Long> implements TipoSanguineoDao { 

} 

TipoSanguineoServiceImpl : 당신이 당신의 문제를 해결해야 TipoSanguineoServiceImpl의 변화 아래 .. 를 생성자 의존성 주입을하려고하는 것처럼

package br.inf.datus.ifisio.service; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.beans.factory.annotation.Qualifier; 
import org.springframework.stereotype.Service; 

import br.inf.datus.ifisio.persistence.dao.GenericDao; 
import br.inf.datus.ifisio.persistence.dao.TipoSanguineoDao; 
import br.inf.datus.ifisio.persistence.entity.TipoSanguineo; 

@Service 
public class TipoSanguineoServiceImpl extends GenericServiceImpl<TipoSanguineo, Long> implements TipoSanguineoService { 

    @Autowired 
    private final TipoSanguineoDao tipoSanguineoDao; 

    public TipoSanguineoServiceImpl(@Qualifier("tipoSanguineoDaoImpl") GenericDao<TipoSanguineo, Long> genericDao) { 
     super(genericDao); 
     this.tipoSanguineoDao = (TipoSanguineoDao) genericDao; 
    } 
} 

답변

0

보인다.

당신은 (필드 tipoSanguineoDao@Autowired 주석) 클래스에 필드 주사를 지정하지만 기본값을 제공하지 Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [br.inf.datus.ifisio.service.TipoSanguineoServiceImpl]: No default constructor found;

(인수 없음) : 스택 추적에

@Autowired 
public TipoSanguineoServiceImpl(@Qualifier("tipoSanguineoDaoImpl") GenericDao<TipoSanguineo, Long> genericDao) { 
      super(genericDao); 
      this.tipoSanguineoDao = (TipoSanguineoDao) genericDao; 
     } 
+0

감사합니다. 공장. –

1

답이있다 건설자. 생성자 삽입 (생성자 인수에 @Qualifier 주석이 있다는 사실에서 알 수 있습니다.)하지만 필드 주입과 충돌합니다.

@Autowired 주석을 생성자로 이동하십시오.

+0

고맙습니다. Works –

+0

답변 중 하나를 수락하면 크레딧이 주어지고 솔루션을 읽은 다른 사람들은 해결책이 무엇인지 알 수 있습니다. –

관련 문제