유형의 일치하는 빈이 없습니다...종속성이 있는 것으로 확인됨
스프링 소스 포럼에서 며칠간의 노력과 답변을 기다린 후에 여기서 시도해 보겠습니다.응용프로그램을 실행하면 다음과 같은 예외가 발생합니다.
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 .http.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 );
}
}
여러 가지가 원인이 될 수 있어요. 저장소 전체를 확인할 필요가 없었어요. 그래서 어쩔 수 없이 여기서 나가려고요.
먼저, 구현 과정에서 주석(@Service 또는 @Component)이 누락될 수 있습니다.com.example.my.services.user.UserService
, 주석을 구성에 사용하는 경우.xml만 사용하는 경우에는<bean>
-사용자 서비스 구현에 대한 정의.
주석을 사용하고 있고 구현이 정확하게 주석이 달렸다면 구현이 위치한 패키지가 스캔되었는지 확인합니다.<context:component-scan base-package=
-value).
응용프로그램에 추가Context:
<bean id="userService" class="com.example.my.services.user.UserServiceImpl ">
주석 @Repository를 사용자 Dao Class의 헤드에 추가합니다.사용자Dao가 인터페이스인 경우, 인터페이스의 구현에 이 주석을 추가합니다.
AOP 사용으로 인해 테스트 구성에 비슷한 문제가 있습니다.이 코드 라인을 spring-config.xml에 추가했습니다.
<aop:config proxy-target-class="true"/>
효과가 있어요!
비슷한 문제가 있었지만 com.example.my .services.myUser 구현에서 (@Service 또는 @Component)를 누락했습니다.My User ServiceImple
이 문제가 배포에서만 발생하는 경우 .war에서 참조하는 패키지의 종속성이 있는지 확인합니다.예를 들어, 디버그 구성이 정상적으로 작동하는 내 컴퓨터에서 로컬로 작동하고 있었지만, Amazon의 Elastic Beanstalk에 배포한 후 이 오류가 발생하여 종속성 중 하나가 .war 패키지에 번들로 제공되지 않았습니다.
제 경우에는 CrudRepository에 대한 의존성이 잘못된 것이었습니다.추가된 IDE는 다음과 같습니다.
<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>
첫 번째 것은 제거했고 모든 것이 잘 되었습니다.
저도 같은 문제가 있었는데 저의 경우, 구현된 수업이 실수로 '추상'이 되어 자동배선이 실패했습니다.
언급URL : https://stackoverflow.com/questions/8961275/no-matching-bean-of-type-found-for-dependency
'programing' 카테고리의 다른 글
XML의 앰퍼샌드가 HTML의 엔티티로 렌더링되도록 하려면 어떻게 해야 합니까? (0) | 2023.09.10 |
---|---|
TCP 프로토콜이 아닌 파일 소켓과 연결하는 방법? (0) | 2023.09.10 |
제약 조건 위반 시 사용자 친화적 오류 메시지를 제공할 수 있는 방법이 있습니까? (0) | 2023.09.10 |
json 또는 html 파일을 사용하여 jQuery ajax를 사용하여 테이블 자동 새로 고침/업데이트 (0) | 2023.09.10 |
MySql 경고 트래핑 (0) | 2023.09.10 |