Je reçois une exception quand je commence ma demande, où le printemps se plaignent de UnsatisfiedDependencyException:printemps dépôt JPA pas la mise en œuvre/Autowiring malgré annotation @EnableJpaRepositories
Exception in thread "main" org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'applicationConfig': Unsatisfied dependency expressed through field 'controlRepository'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean found for dependency [com.oak.api.finance.repository.ControlRepository]: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:569)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
Ma demande est organisée dans ce format:
Je déclare mes interfaces référentiel, avec les annotations appropriées printemps JPA:
@RepositoryRestResource(collectionResourceRel = "exchange", path = "exchanges") public interface ControlRepository extends PagingAndSortingRepository<Control, Long> { }
I annotées la classe
EntryPoint
qui contient la méthodemain
@SpringBootApplication @EntityScan(basePackages = {"com.oak.api.finance.model.dto"}) @EnableJpaRepositories(basePackages = {"com.oak.api.finance.repository"}) public class EntryPoint { public static void main(String[] args) { Logger logger = LogManager.getLogger(EntryPoint.class); logger.info("Starting application"); ApplicationContext ctx = new AnnotationConfigApplicationContext(ApplicationConfig.class); // SpringApplication.run(EntryPoint.class, args); ctx.getBean(ApplicationServer.class).start(); }
I utilisé
@Autowired
pour injecter mon dépôt dans ma config de ressort classe (Java)ApplicationConfig
:@Autowired private ControlRepository controlRepository; @Autowired private CompanyRepository companyRepository; @Autowired private SectorRepository sectorRepository;
Essentiellement Je veux contrôler la dépendance sur Spring et la limiter à quelques paquets, (les dépôts, la config java, et le programme ent point de Ry - EntryPoint)
Je suppose que, en spécifiant @EnableJpaRepositories avec le paquet où se trouvent mes dépôts, le printemps créerait un proxy pour mon dépôt et instancier une instance de cela, et que le temps que j'appeler:
ApplicationContext ctx = new AnnotationConfigApplicationContext(ApplicationConfig.class)
les instances de référentiels seraient présents dans les fèves et poole serait possible de les lier automatiquement dans mon ApplicationConfig
contexte, puis de les injecter dans mon contrôleur.
Cela ne se produit manifestement pas, et Spring se plaint du manque de Bean à autowire, mais je ne suis pas sûr de ce qui me manque. Ci-dessous un aperçu de mes paquets: Des idées?
Dans quel paquet est la classe Control. Vous définissez l'analyse d'entité faire le modèle.dto qui me semble étrange. –
La classe Control ainsi que le reste des classes Entity sont dans: com.oak.api.finance.model.dto, dto est où je mets toutes mes classes d'entité. – Charbel
Ajouter SpringApplication.run (EntryPoint.class); après la journalisation et supprimez la partie ApplicationContext. Assurez-vous que votre classe ApplicationConfig est annotée avec @Configuration –