Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Por qué los beans creados no se analizan cuando se inicia Spring Boot?

¿Por qué los beans creados no se analizan cuando se inicia Spring Boot?

Esto significa que su clase de aplicación de arranque Spring no está en io.github.gefangshuai.app y sus subpaquetes.

La regla predeterminada para el ensamblaje de beans en el proyecto SpringBoot es escanear de arriba a abajo según la ubicación del paquete donde se encuentra la clase Aplicación. La "clase de aplicación" es la clase de entrada del proyecto SpringBoot. Si el paquete donde se encuentra la clase de aplicación es: io.geithub.gefangshuai.app, solo se incluirá el paquete io.github.gefangshuai.app y todos sus subpaquetes. escaneado si el servicio o dao se encuentra Si el paquete no está en io.github.gefangshuai.app y sus subpaquetes, el paquete no se escaneará

El motivo para cambiar la forma de escanear. paquetes es simple: use la anotación @ComponentScan para especificar qué paquetes escanear.

Esto se puede probar mediante:

Paso 1: crear dos paquetes nuevos cn.kfit; org.kfit;

Paso 2: Crear dos nuevas clases de prueba;

Aquí, para facilitar las pruebas, dejamos que nuestras clases se ejecuten al inicio, por lo que escribiremos dos clases que implementar la interfaz CommandLineRunner, para que podamos ver la información impresa al iniciar.

cn.kfit.MyCommandLineRunner1 :?paquete?cn.kfit;?

importación?org.springframework.boot.CommandLineRunner;

@Configuración?

clase pública?MyCommandLineRunner1?implementos?CommandLineRunner?{?

@Override?

publicvoid?run(String... ?args)?throws?Exception?{ ?

System.out.println("MyCommandLineRunner1.run()");

¿Publicvoid?

org.kfit.MyCommandLineRunner2 :?package?org.kfit;?

importar?org.springframework.boot.CommandLineRunner;?

@Configuración?

publicclass?MyCommandLineRunner2?implementos?CommandLineRunner?{?

@Override?

publicvoid?run(String...?args)?throws?Exception?{ ?

System.out.println("MyCommandLineRunner2.run()");

}

}

Paso 3 : Anota la clase de inicio;

Agrega la siguiente anotación en la clase App.java: / Puedes usar: basePackageClasses={},basePackages={}?

@ComponentScan(basePackages ={ "cn.kfit", "org.kfit"})

Si ve una copia impresa al inicio:

Configuración exitosa.