Spring сказал, что компонент уже существует, но этот компонент был просто перемещен в другую папку

#java #spring

#java #spring

Вопрос:

Я только что переместил некоторые файлы в свой проект, и spring boot не запускается

 .
├── DatabaseLoader.java
├── HomeController.java
├── product
│   ├── Product.java
│   └── ProductRepository.java
├── security
│   ├── JWTAuthenticationFilter.java
│   ├── JWTAuthorizationFilter.java
│   ├── SecurityConstants.java
│   └── WebSecurity.java
├── ShopApplication.java
└── user
    ├── ApplicationUser.java
    ├── ApplicationUserRepository.java
    ├── UserController.java
    └── UserDetailsServiceImpl.java

 

Это потому, что контроллеры должны были находиться в той же папке, что и ShopApplication (@SpringBootApplication)?

Spring показывает это описание:

 The bean 'productRepository', defined in com.ecommerce.shop.product.ProductRepository defined in
@EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration,
could not be registered. A bean with that name has already been defined in 
com.ecommerce.shop.ProductRepository defined in @EnableJpaRepositories declared on
JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration and overriding is disabled.
 

Если информации недостаточно, вы можете проверить мой репозиторий github здесь

Я был бы очень благодарен за любое внимание. Спасибо!

Комментарии:

1. Вы переместили его, не очистили проект и просто перезапустили. Старый файл класса все еще там. Очистите и перестройте проект

Ответ №1:

Кажется, что вы можете использоваться @EnableJpaRepositories несколько раз. В ваших классах репозитория @Repository было бы достаточно просто их аннотировать.

 @Repository
public interface ProductRepository extends JpaRepository<Product, Long> {
}
 

Комментарии:

1. @Repository Включение туда ничего не дает. Размещение его в интерфейсе практически бесполезно. Spring Data обнаруживает их другими способами, и сканирование компонентов их игнорирует.