복붙노트

[SPRING] Beancreationexception + NosuchBandandefinition 예외

SPRING

Beancreationexception + NosuchBandandefinition 예외

Spring Boot로 Spring 4 응용 프로그램을 작성 중입니다.

com.test.tm 패키지에서, 신청 종류 :

@SpringBootApplication   
@EnableJpaRepositories( repositoryFactoryBeanClass = GenericRepositoryFactoryBean.class )  
@Import( { HikariDataSourceConfig.class } )  
public class Application {  
   public static void main( String[] args )
   {
    SpringApplication.run(Application.class, args);
   }  
}  

com.test.tm.entities 패키지에서, 사용자 등급 :

@Table( name = "test.user" )
@Entity
public class User implements Serializable {  
  @Id
  @GeneratedValue( strategy = GenerationType.AUTO )
  private Integer id;
  private String message;  
  ....  
}  

com.test.tm.user에서 UserService.class :

@Service
@Transactional( rollbackFor = Exception.class )
public class UserService {

@Autowired
private GenericRepository<User, Serializable> gr;

 public User saveEntity( User usr )
 {
    return gr.save(usr);
 }

 public String getUser()
 {
    //Get User logic
 }  
}  

GenericRepository.java:

@NoRepositoryBean
public interface GenericRepository<T, ID extends Serializable> extends PagingAndSortingRepository<T, ID> {
    public List<T> findByNamedQuery( String name );
    public List<T> findByNamedQueryAndParams( String name, Map<String, Object> params );
 }  

위의 메소드에 대한 로직이 구현되는 GenericRepositoryImpl.java도 있습니다.

Application.java를 실행할 때 다음 오류가 발생합니다.

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.test.utils.spring.repo.GenericRepository com.test.tm.user.UserService.gr; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type[com.test.utils.spring.repo.GenericRepository] 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) }

해결법

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

    1.광고. 1. Spring은 문서에 표시된대로 기본 이름으로 userService bean을 생성한다.

    광고. 1. Spring은 문서에 표시된대로 기본 이름으로 userService bean을 생성한다.

    광고. 2. 나는 고소하지 않았지만 아마도 GenericRepositoryImpl은 com.test.tm 패키지? 그렇다면 적절한 패키지 선언 즉 @ ComponentScan ( "com.test.utils") 또는 Boot 1.3 이상을 사용하는 경우 @SpringBootApplication (scanBasePackages = { "com.test.utils")을 수정하여 추가 @ComponentScan 주석을 지정하십시오. , "com.test.tm"})

  2. from https://stackoverflow.com/questions/33494346/beancreationexceptionnosuchbeandefinition-exception by cc-by-sa and MIT license