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áticaConfigure 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.