run intellij application java spring intellij-idea annotations autowired

java - application - constructor intellij



intellij diciendo incorrectamente que no se encontraron beans de tipo para repositorio autocableado (19)

He creado una prueba de unidad simple pero IntelliJ está resaltando incorrectamente en rojo. marcándolo como un error

No frijoles?

Como puede ver a continuación, ¿pasa la prueba? ¿Entonces debe ser Autowired?


A veces se requiere que indique dónde @ComponentScan debe buscar componentes. Puede hacerlo pasando los paquetes como parámetro de esta anotación, por ejemplo:

@ComponentScan(basePackages={"path.to.my.components","path.to.my.othercomponents"})

Sin embargo, como ya se mencionó, la anotación @SpringBootApplication reemplaza @ComponentScan, por lo tanto, en tales casos debe hacer lo mismo:

@SpringBootApplication(scanBasePackages={"path.to.my.components","path.to.my.othercomponents"})

Al menos en mi caso, Intellij dejó de quejarse.


A veces, en mi caso, la razón es una importación incorrecta. Yo accidentalmente importé

import org.jvnet.hk2.annotations.Service

en lugar de

import org.springframework.stereotype.Service

al aceptar ciegamente la primera opción en las importaciones sugeridas por Idea. Me tomó unos minutos la primera vez que sucedió :-)


Agregue Spring annotation @Repository a la clase de repositorio.

Sé que debería funcionar sin esta anotación. Pero si agrega esto, IntelliJ no mostrará el error.

@Repository public interface YourRepository ... ...

Si usa Spring Data con la extensión de la clase Repository , habrá paquetes de conflicto. Entonces debes indicar pagkages de explicidad.

import org.springframework.data.repository.Repository; ... @org.springframework.stereotype.Repository public interface YourRepository extends Repository<YourClass, Long> { ... }

Y luego puede autoconectar su repositorio sin errores.

@Autowired YourRepository yourRepository;

Probablemente no sea una buena solución (supongo que estás intentando registrar el repositorio dos veces). Pero trabaja para mí y no muestra errores.

Tal vez en la nueva versión de IntelliJ se puede arreglar: https://youtrack.jetbrains.com/issue/IDEA-137023


Esto parece ser un error en el último IntelliJ y tiene que ver con un posible problema de almacenamiento en caché?

Si agrega la anotación @Repository como mk321 mencionado anteriormente, guarde, luego elimine la anotación y vuelva a guardar, esto soluciona el problema.


Estoy usando esta anotación para ocultar este error cuando aparece en IntelliJ v.14:

@SuppressWarnings("SpringJavaAutowiringInspection")


Estoy usando spring-boot 2.0 y intellij 2018.1.1 ultimate edition y me enfrenté al mismo problema.

Lo resolví colocando @EnableAutoConfiguration en la clase de aplicación principal

@SpringBootApplication @EnableAutoConfiguration class App{ /**/ }


Lo que debes hacer es agregar

@ComponentScan("package/include/your/annotation/component") en AppConfiguration.java .

Como creo que el AppConfiguraion.java tu AppConfiguraion.java es más profundo que tu paquete de componentes de anotación (@Service, @Component ...),

como "package/include/your/annotation/component/deeper/config" .


Mi solución a este problema en mi aplicación de arranque de primavera fue abrir el contexto de la aplicación de primavera y agregar la clase para el bean autowired faltante manualmente.

(acceda a través del menú Estructura del proyecto o la ventana de la herramienta de primavera ... edite "Contexto de la aplicación de primavera")

Entonces, en lugar de SpringApplicationContext que solo contiene mi configuración de resorte ExampleApplication, también contiene el Bean que falta:

SpringApplicationContext:

  • ExampleApplication.java
  • MissingBeanClass.java

et voilà: ¡El mensaje de error desapareció!


Mi versión de IntelliJ IDEA Ultimate (2016.3.4 Build 163) parece apoyar esto. El truco es que debe haber habilitado el plugin Spring Data.


Mientras que las pruebas estén pasando usted está bien, presione alt + enter tomando el cursor sobre el error y dentro del submenú del primer elemento encontrará Disable Inspection seleccione eso


Poner @Component o @configuration en su archivo de configuración de bean parece funcionar, es decir algo como:

@Configuration public class MyApplicationContext { @Bean public DirectoryScanner scanner() { return new WatchServiceDirectoryScanner("/tmp/myDir"); } } @Component public class MyApplicationContext { @Bean public DirectoryScanner scanner() { return new WatchServiceDirectoryScanner("/tmp/myDir"); } }


Si no quiere hacer ningún cambio en su código solo para hacer su IDE feliz. Lo he solucionado agregando todos los componentes a la faceta Spring.

  1. Cree un grupo con el nombre "Servicio, procesadores y enrutadores" o cualquier nombre que desee;
  2. Elimine y vuelva a crear el "Contexto de la aplicación Spring" use el grupo que creó anteriormente como padre.


Siempre resuelvo este problema haciendo de following .. Configuraciones> Inspecciones> Spring Core> Código que pasa del error a la advertencia de la opción de gravedad


También me encontré con este problema y lo resolví quitando Spring Facet:

  • Archivo -> Estructura del proyecto
  • Seleccionar Facets
  • Eliminar Spring

¡Buena suerte!


Todo lo que necesita hacer para que esto funcione es el siguiente código:

@ComponentScan public class PriceWatchTest{ @Autowired private PriceWatchJpaRepository priceWatchJpaRepository; ... ... }


Tuve un problema similar en la aplicación Spring Boot. La aplicación utiliza Feign (solicitudes de sintetización de clientes HTTP desde interfaces anotadas). Al tener la interfaz SomeClient anotada con @FeignClient , Feign genera una clase de proxy en tiempo de ejecución que implementa esta interfaz. Cuando algún componente de Spring intenta autoaumentar bean de tipo SomeClient , Idea no reclama ningún bean del tipo SomeClient encontrado ya que no existe una clase real en el proyecto y Idea no aprende a comprender la anotación de @FeignClient de ninguna manera.

Solución: anote la interfaz SomeClient con @Component . (En nuestro caso, no utilizamos @FeignClient anotación @FeignClient en SomeClient , preferimos usar metaannotación @OurProjectFeignClient que tiene la anotación @FeignClient y agregar la anotación @Component para que funcione también).


Tuve un problema similar en mi aplicación. Cuando agregué las anotaciones, desactivé el marcado incorrecto.

@ContextConfiguration(classes = {...})


Y una última pieza de información importante: agregue el ComponentScan para que la aplicación conozca las cosas que necesita cablear. Esto no es relevante en el caso de esta pregunta. Sin embargo, si no se está ejecutando @autowiring , esta es probablemente su solución.

@Configuration @ComponentScan(basePackages = { "some_package", }) public class someService {


Tuve el mismo problema al crear una aplicación Spring Boot usando su anotación @SpringBootApplication . Esta anotación representa @Configuration , @EnableAutoConfiguration y @ComponentScan acuerdo con la referencia de primavera .

Como era de esperar, la nueva anotación funcionó correctamente y mi aplicación se ejecutó sin problemas, pero Intellij siguió quejándose de las dependencias @Autowire no @Autowire . Tan pronto como cambié a usar @Configuration , @EnableAutoConfiguration y @ComponentScan separado, los errores cesaron. Parece que Intellij 14.0.3 (y muy probablemente también las versiones anteriores) aún no está configurado para reconocer la anotación @SpringBootApplication .

Por ahora, si los errores te molestan tanto, vuelve a esas tres anotaciones separadas. De lo contrario, ignore Intellij ... su resolución de dependencia está configurada correctamente, ya que su prueba pasa.

Siempre recuerda ...

El hombre siempre es más grande que la máquina.