Исключение Beancreation + NosuchBeandefinition

java spring spring-boot spring-4

142 просмотра

1 ответ

Я работаю над приложением Spring 4 с SpringBoot.

В пакете 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. Нет такой переменной с именем userService, которую я определил, но все равно она показывает ошибку.
  2. В любом случае я могу решить вышеуказанную проблему.
Автор: Abhishek Источник Размещён: 12.11.2019 09:02

Ответы (1)


1 плюс

Решение

Объявление. 1. Spring создает userServiceкомпонент с именем по умолчанию, как указано в документации .

Объявление. 2. Я не судюсь, конечно, но, возможно, GenericRepositoryImplэто за пределами com.test.tmпакета? Если да, то укажите дополнительную @ComponentScanаннотацию с соответствующим объявлением пакета, т.е. @ComponentScan("com.test.utils")или - если вы используете Boot 1.3+ - измените@SpringBootApplication(scanBasePackages={"com.test.utils","com.test.tm"})

Автор: endriu_l Размещён: 03.11.2015 12:05
Вопросы из категории :
32x32