Preguntas de la entrevista de Java: artículos de SpringBoot

1. ¿Qué es SpringBoot?

Spring Boot es un subproyecto de la organización de código abierto Spring.

Es una solución integral para componentes Spring, principalmente para simplificar

Reduce la dificultad de usar Spring y simplifica la configuración de XML pesado .

Configuración, se proporcionan varios lanzadores , que se pueden personalizar durante la operación.

Configuración, los desarrolladores pueden comenzar rápidamente

2. ¿Por qué utilizar SpringBoot?

① Operación independiente

② Configuración simplificada

③ Configuración automática

④ Sin generación de código ni configuración XML

⑤ No es necesario implementar un archivo war

3. ¿Cuáles son los archivos de configuración principales de Spring Boot? ¿Cual es la diferencia?

El archivo de configuración principal de Spring Boot es la aplicación.

y archivo de configuración de arranque

1. Archivo de configuración de la aplicación

Se utiliza principalmente para la configuración automática de proyectos Spring Boot.

2. archivo de configuración de arranque

Hay varios escenarios de aplicación de la siguiente manera:

① Cuando utilice el centro de configuración SpringCloudConfig,

   En este momento, debe agregar el archivo de configuración de arranque

   Conéctese a las propiedades de configuración del centro de configuración para cargar archivos externos.

   Información de configuración del centro de configuración ;
② Algunos atributos fijos que no se pueden sobrescribir;
③ Algunos escenarios de cifrado/descifrado;

4. ¿Cuáles son los formatos de los archivos de configuración de SpringBoot? ¿Cual es la diferencia?

.properties y .yml , la diferencia entre ellos es principalmente el libro

el formato de escritura es diferente

1. .propiedades

app.user.name = javastack

2. .yml

app:
  user:
    name: javastack

Además, el formato .yml no es compatible con @PropertySource.

Configuración de importación de anotaciones

5. ¿Cuál es la anotación principal de SpringBoot? ¿De qué anotaciones se compone principalmente?

La anotación sobre la clase de inicio es @SpringBootApplication ,

También es la anotación principal de SpringBoot.

La combinación principal contiene las siguientes 3 anotaciones:

@SpringBootConfiguration : Combinado

   Anotación @Configuration para implementar archivos de configuración

   La función de
@EnableAutoConfiguration : abre la configuración automática

  Configure automáticamente la función, también puede desactivar una determinada configuración automática

  Opciones configuradas, como desactivar la función de configuración automática de la fuente de datos:

  @SpringBootApplication(excluir =

  { DataSourceAutoConfiguration.class })
@ComponentScan : escaneo de componentes Spring

6. ¿Cuáles son las formas de habilitar las funciones de SpringBoot?

① Heredar  el proyecto spring-boot-starter-parent

② Importe  el proyecto spring-boot-dependencies de acuerdo con

    confiar

7. ¿SpringBoot necesita un contenedor independiente para ejecutarse?

No es necesario, contenedores integrados como Tomcat/Jetty

8. ¿Cuáles son las formas de ejecutar SpringBoot?

① Utilice comandos para empaquetar o ejecutar en un contenedor

② Ejecutar con el complemento Maven/Gradle

③ Ejecute directamente el método principal para ejecutar

9. ¿Cuál es el principio de la configuración automática de SpringBoot?

Anota @EnableAutoConfiguration,

@Configuración, @ConditionalOnClass

Es el núcleo de la configuración automática, primero debe ser una configuración.

Archivo de configuración, y luego según si existe esta clase en la ruta de clase

ir a configuración automática

Las anotaciones de configuración automática de Spring Boot son

@EnableAutoConfiguration, desde arriba

Las clases @Import se pueden encontrar debajo de autoload auto

mapeo configurado

 org.springframework.core.io.support.SpringFactoriesLoader.loadFactoryNames(Class<?>, ClassLoader)
public static List<String> loadFactoryNames(Class<?> factoryClass, 
ClassLoader classLoader) {
    String factoryClassName = factoryClass.getName();
    try {
        Enumeration<URL> urls = (classLoader != null ? 
classLoader.getResources(FACTORIES_RESOURCE_LOCATION) :
lassLoader.getSystemResources(FACTORIES_RESOURCE_LOCATION));
        List<String> result = new ArrayList<String>();
        while (urls.hasMoreElements()) {
            URL url = urls.nextElement();
            Properties properties = PropertiesLoaderUtils.loadProperties(
new UrlResource(url));
            String factoryClassNames = properties.getProperty(factoryClassName);
          result.addAll(Arrays.asList(StringUtils.commaDelimitedListToStringArray(
factoryClassNames)));
        }
        return result;
    }
    catch (IOException ex) {
        throw new IllegalArgumentException("Unable to load [" 
            + factoryClass.getName() +
            "] factories from location [" 
            + FACTORIES_RESOURCE_LOCATION + "]", ex);
    }
}

Este método cargará el classpath y las clases configuradas automáticamente asignadas en la configuración META-INF/spring.factories en todos los paquetes jar.

/**
* The location to look for factories.
* <p>Can be present in multiple JAR files.
*/
public static final String FACTORIES_RESOURCE_LOCATION = "META-INF/spring.factories";
查看Spring Boot自带的自动配置的包: spring-boot-autoconfigure-1.5.6.RELEASE.jar,
打开其中的META-INF/spring.factories文件会找到自动配置的映射

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,\
org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration,\
org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration,\
org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration,\
org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration,\
org.springframework.boot.autoconfigure.cloud.CloudAutoConfiguration,\
...

Echemos un vistazo a las anotaciones de implementación de la configuración automática de la fuente de datos.

@Configuration
@ConditionalOnClass({ DataSource.class, EmbeddedDatabaseType.class })
@EnableConfigurationProperties(DataSourceProperties.class)
@Import({ Registrar.class, DataSourcePoolMetadataProvidersConfiguration.class })
public class DataSourceAutoConfiguration {
...
@Configuration,@ConditionalOnClass就是自动配置的核心,首先它得是一个配置文件,其次根据类

10. ¿Cómo entender los Starters en SpringBoot?

Los entrantes pueden entenderse como un entrante , que contiene un

Una serie de paquetes de dependencias que se pueden integrar en la aplicación, puede

Integración integral de Spring y otras tecnologías sin

Necesidad de encontrar código de muestra y paquetes dependientes en todas partes

Si desea utilizar Spring JPA para acceder a la base de datos, simplemente

Para unirse al inicio de spring-boot-starter-data-jpa

Puedes usar la dependencia del dispositivo.

 

Supongo que te gusta

Origin blog.csdn.net/m0_72041293/article/details/132393449
Recomendado
Clasificación