working springbootapplication scanbasepackages scan not enable component annotation java spring spring-mvc spring-boot

java - springbootapplication - spring boot scan controller package



Spring Boot y @ComponentScan entre dos tarros (2)

Tengo 2 proyectos. Uno es un proyecto DAL que realiza operaciones CRUD en una base de datos neo4j utilizando las API spring neo4j. Este proyecto se empaqueta como un frasco y se incluye en el proyecto # 2. Proyecto n. ° 2 Es un proyecto de servicios tranquilos de Spring que utiliza Spring Boot para empaquetar y crear un archivo ejecutable que se ejecuta en un servidor Tomcat incorporado.

Al intentar ejecutar mi archivo ejecutable que Spring Boot ha creado para mí, sigo obteniendo esta excepción. se espera al menos 1 bean que califica como candidato autowire para esta dependencia. Anotaciones de dependencia: {@ org.springframework.beans.factory.annotation.Autowired (required = true)}

Basado en mis lecturas, si estoy utilizando @ComponentScan, puedo dar los directorios de anotaciones para que miren. Así que le doy el directorio base para mi proyecto de servicios. Y le doy el directorio base para mi DAL.jar incluido, pero aún así no hay suerte, así es como se ve la anotación.

Extraído de los comentarios:

Declaración de exploración de componentes

@ComponentScan({"com.foo.dal.*","com.foo.notification.*"})

Stacktrace:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ''pushCommandsController'': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.teradata.dal.example.PushRepository com.teradata.notification.rest.controller.PushCommandsController.repository; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.teradata.dal.example.PushRepository] 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)}

ACTUALIZAR:

basado en la respuesta de @chrylis: cambio realizado en @ComponenetScan

@ComponentScan({"com.teradata.notification","com.teradata.dal"})

correr dentro:

java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:53) at java.lang.Thread.run(Thread.java:744) Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named ''org.springframework.boot.autoconfigure.MessageSourceAutoConfiguration'' is defined

MÁS DETALLE SOBRE EL PROYECTO DAL Y EL PROYECTO DE SERVICIO:

PROYECTO DAL:

Proyecto de Servicios:


El argumento de @ComponentScan es un nombre de paquete, y esas cadenas no son paquetes válidos. Suelta el .* De ellos; Primavera escanea subpaquetes automáticamente.