plugin - IntelliJ IDEA muestra errores al usar la anotación @Autowired de Spring
spring boot intellij (20)
IntelliJ IDEA muestra errores cuando utilizo la anotación @Autowired
de Spring en la clase, pero la clase está funcionando sin ningún problema.
Aquí está este mensaje de error:
Los miembros autocableados se deben definir en el bean de resorte válido (@ Component / @ Service, etc.) menos ... (Ctrl + F1) Comprueba los problemas de autowiring en una clase de bean.
¡Obtuve el mismo error aquí!
Parece que el Intellij no puede verificar si la implementación de la clase es @Service o @Component.
Resuélvelo simplemente cambiando de Error a Advertencia (Presionando Alt + Intro).
Archivo -> Estructura del proyecto -> Módulos -> + (en la columna central) -> Primavera -> Aceptar
Asegúrese de que su IntelliJ Idea (IDE) conozca todas las configuraciones de resortes necesarias con las que se inspecciona su módulo.
Puedes consultar esto debajo
Archivo> Estructura del proyecto> Módulos> [el nombre de su proyecto en el panel derecho]> Primavera
A veces, debemos decirle explícitamente al IDE que la configuración del resorte proviene de una dependencia (un contenedor presente en el classpath de su proyecto)
Asegúrese de tener sus definiciones de Spring Bean correctas. A veces, la aplicación funciona bien, solo muestra un error en el IDE, verifica tu archivo de proyecto ''iml'' si tienes una faceta de Spring definida.
Debes verificar si tienes @Component, @Repository o similar agregado en la clase
Elimine el archivo .iml de todo su módulo de proyecto y luego vaya a Archivo -> Invalidar caches / reiniciar
He resuelto este problema de esta manera. En IntelliJ, todos sus paquetes deben estar en un paquete secundario que es el paquete secundario de main / java. Por ejemplo, puse todos mis paquetes en src / main / java / com.misisol.watchStore / y Spring pudo encontrar mis beans luego.
Inyectar Bean con @Qualifier resolvió el problema por mí.
La mía es por no agregar @Repository en mi interfaz CrudRepository, el tutorial que estaba viendo no lo agregó a STS y no se quejó.
Lo solucioné añadiendo una faceta web.
Parece el problema de visibilidad: el controlador principal no ve el Componente que está intentando conectar.
Intenta agregar
@ComponentScan("path to respective Component")
al controlador principal.
Resuelto el problema yendo a Archivo >> Estructura del proyecto >> Facetas y luego agregando todos los archivos de configuración a Spring Facet. Después de eso, comenzó a detectar archivos en los que residen los frijoles y pudo ordenar el problema. IntelliJ dando esta verificación es bastante valioso y en mi humilde opinión no se debe deshabilitar.
Si sabe que el bean existe y es solo un problema de las inspecciones, simplemente agregue lo siguiente antes de la declaración de la variable:
@SuppressWarnings("SpringJavaAutowiringInspection")
@Inject MyClass myVariable;
A veces, IntelliJ no puede resolver si se ha declarado un bean, por ejemplo, cuando el bean se incluye condicionalmente y la resolución de la condición ocurre en el tiempo de ejecución.
También tuve este problema. Hacer alt + enter y luego pedir volver a ejecutar o deshabilitar la inspección de Spring en la línea afectada, lo solucionó. Esto parece haberse convertido en un problema después de la actualización 13.4.
Tengo el mismo problema. La mía era porque el frijol que contenía la referencia de autoenlace no era un componente de Spring (era un EJB), sino que tenía un Interceptor Interceptor SpringBeanAutowiring que permitía el uso del autoenlace. Creo que Intellij no tiene esta posibilidad en su inspección de Autowiring.
Tuve el mismo problema con IntelliJ IDEA 13.1.4 Lo resolví quitando la faceta Spring (Archivo-> Estructura del proyecto) y dejándolo solo para mostrar "Detection".
Tuve un problema similar. Lo resolví desmarcando la opción "Procesar beans explícitamente anotados" (ver la captura de pantalla a continuación). Esta opción está habilitada por defecto en Linux. Ahora las anotaciones @Service y @Configurations son visibles. screenshot
Yo tuve el mismo problema. Lo resolví agregando la faceta Spring (Archivo-> Estructura del proyecto) para cada módulo relevante, y luego agregué los archivos de configuración. Para algunos proyectos (spring mvc), los archivos de configuración se detectaron automáticamente. Sin embargo, para un proyecto jar, tuve que agregar los archivos de configuración manualmente.
en mi caso me faltaba escribir en web.xml:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext.xml</param-value>
</context-param>
y en el archivo de contexto de la aplicación:
<context:component-scan base-package=[your package name] />
después de agregar estas etiquetas y ejecutar maven para reconstruir el proyecto, el error de autowired en intellj desapears y el ícono del bean aparece en el margen izquierdo:
eg1:
director:Settings - Editor - Inspections - Spring - Spring Core - Code - Autowiring for Bean Class
operate:checkout 勾去掉
eg2:
1.impl class add @service
like this:
@Service
public class CityServiceImpl implements CityService{
@Autowired
private CityDao cityDao;
like this
2.dao file class add @Repository
@Repository
public interface CityDao {