복붙노트

[SPRING] 종속성에 대해 일치하는 유형의 일치하는 bean이 없습니다.

SPRING

종속성에 대해 일치하는 유형의 일치하는 bean이 없습니다.

스프링 소스 포럼에 대한 답변을 기다리면서 며칠간 시험해 본 후에 여기서 그것을 시도 할 것입니다. 내 애플리케이션을 실행하면 이러한 예외가 발생합니다.

org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.example.my.services.user.UserService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:924)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:793)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:707)
    org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:478)
    org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
    org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:284)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1106)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
    org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
    org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
    org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
    org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
    org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:631)
    org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:588)
    org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:645)
    org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:508)
    org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:449)
    org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:133)
    javax.servlet.GenericServlet.init(GenericServlet.java:212)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    java.lang.Thread.run(Thread.java:662)

관련 코드는 다음과 같습니다.

응용 프로그램 컨텍스트 :

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  <property name="driverClassName" value="org.postgresql.Driver" />
  <property name="url" value="jdbc:postgresql://localhost:5432/test" />
  <property name="username" value="test" />
  <property name="password" value="test" />
</bean>

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="dataSource" ref="dataSource" />
  <property name="packagesToScan" value="com.example.my.entities.*" />
  <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" />
  <property name="hibernateProperties">
    <props>
      <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
      <prop key="hibernate.show_sql">true</prop>
    </props>
  </property>
</bean>

<tx:annotation-driven />
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  <property name="sessionFactory" ref="sessionFactory" />
</bean>

com.example.my.entities.user :

@Entity
@Table( name = "tbl_users" )
public class User
{
  @Id
  @Column( name = "id" )
  @GeneratedValue
  private int id;

  @Column( name = "username" )
  private String username;

  @Column( name = "password" )
  private String password;

  public void setId( int id )
  {
    this.id = id;
  }

  public int getId()
  {
    return id;
  }

  public void setUsername( String username )
  {
    this.username = username;
  }

  public String getUsername()
  {
    return username;
  }

  public void setPassword( String password )
  {
    this.password = password;
  }

  public String getPassword()
  {
    return password;
  }
}

서비스:

@Service
public class UserServiceImpl implements UserService
{
  @Autowired
  private UserDAO userDAO;

  @Override
  @Transactional
  public void addUser( User user )
  {
    userDAO.addUser( user );
  }

  @Override
  @Transactional
  public List<User> listUsers()
  {
    return userDAO.listUsers();
  }

  @Override
  @Transactional
  public void removeUser( int id )
  {
    userDAO.removeUser( id );
  }
}

해결법

  1. ==============================

    1.여러 가지로 인해이 문제가 발생할 수 있습니다. 전체 저장소를 확인하지 않아도되므로 여기에서 사지가됩니다.

    여러 가지로 인해이 문제가 발생할 수 있습니다. 전체 저장소를 확인하지 않아도되므로 여기에서 사지가됩니다.

    먼저, 설정에 주석을 사용하는 경우 com.example.my.services.user.UserService 구현에서 주석 (@Service 또는 @Component)을 누락시킬 수 있습니다. XML 만 사용한다면 UserService 구현에 대한 정의가 누락 된 것일 수 있습니다.

    주석을 사용하고 있으며 구현에 주석이 올바르게 달린 경우 구현이 위치한 패키지가 검사되는지 확인하십시오 (

  2. ==============================

    2.this를 당신에게 추가하십시오. applicationContext :

    this를 당신에게 추가하십시오. applicationContext :

     <bean id="userService" class="com.example.my.services.user.UserServiceImpl ">
    
  3. ==============================

    3.userDao 클래스의 head에 주석 @Repository를 추가합니다. userDao가 인터페이스 인 경우 인터페이스의 구현에이 주석을 추가하십시오.

    userDao 클래스의 head에 주석 @Repository를 추가합니다. userDao가 인터페이스 인 경우 인터페이스의 구현에이 주석을 추가하십시오.

  4. ==============================

    4.AOP를 사용하기 때문에 테스트 구성에서 비슷한 문제가 있습니다. spring-config.xml에이 코드 줄을 추가했습니다.

    AOP를 사용하기 때문에 테스트 구성에서 비슷한 문제가 있습니다. spring-config.xml에이 코드 줄을 추가했습니다.

    <aop:config proxy-target-class="true"/>
    

    그리고 그것은 작동합니다!

  5. ==============================

    5.비슷한 문제가 있었지만 com.example.my.services.myUser.MyUserServiceImpl 구현 (@Service 또는 @Component)이 누락되었습니다.

    비슷한 문제가 있었지만 com.example.my.services.myUser.MyUserServiceImpl 구현 (@Service 또는 @Component)이 누락되었습니다.

  6. ==============================

    6.이 작업이 배포에서만 발생하는 경우 .war에서 참조하는 패키지의 종속성을 확인하십시오. 예를 들어, 이것은 디버깅 구성이 잘 작동하는 내 컴퓨터에서 로컬로 작동하지만 Amazon의 Elastic Beanstalk에 배포 한 후이 오류가 발생하고 종속성 중 하나가 .war 패키지에 번들되지 않은 것으로 나타났습니다.

    이 작업이 배포에서만 발생하는 경우 .war에서 참조하는 패키지의 종속성을 확인하십시오. 예를 들어, 이것은 디버깅 구성이 잘 작동하는 내 컴퓨터에서 로컬로 작동하지만 Amazon의 Elastic Beanstalk에 배포 한 후이 오류가 발생하고 종속성 중 하나가 .war 패키지에 번들되지 않은 것으로 나타났습니다.

  7. ==============================

    7.내 경우에는 CrudRepository에 대한 잘못된 종속성이었습니다. 내 IDEA는 다음과 같이 덧붙였다.

    내 경우에는 CrudRepository에 대한 잘못된 종속성이었습니다. 내 IDEA는 다음과 같이 덧붙였다.

        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-commons</artifactId>
            <version>1.11.2.RELEASE</version>
        </dependency>
    

    그러나 나는 단지 필요 :

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <version>RELEASE</version>
        </dependency>
    

    나는 첫번째 것을 제거하고 모든 것이 좋았다.

  8. ==============================

    8.나는 동일한 문제가 있었지만 내 경우에는 구현 된 클래스가 실수로 '추상적'이되어 autowiring이 실패하는 결과를 낳았다.

    나는 동일한 문제가 있었지만 내 경우에는 구현 된 클래스가 실수로 '추상적'이되어 autowiring이 실패하는 결과를 낳았다.

  9. from https://stackoverflow.com/questions/8961275/no-matching-bean-of-type-found-for-dependency by cc-by-sa and MIT license