1. O que é SpringBoot?
Spring Boot é um subprojeto da organização de código aberto Spring.
É uma solução completa para componentes Spring, principalmente para simplificar
Reduz a dificuldade de usar Spring e simplifica a configuração de XML pesado
configuração, são fornecidos vários lançadores , que podem ser personalizados durante a operação
Configuração, os desenvolvedores podem começar rapidamente
2. Por que usar SpringBoot?
① Operação independente
② Configuração simplificada
③ Configuração automática
④ Sem geração de código e configuração XML
⑤ Não há necessidade de implantar arquivo war
3. Quais são os principais arquivos de configuração do Spring Boot? Qual é a diferença?
O arquivo de configuração principal do Spring Boot é o aplicativo
e arquivo de configuração de inicialização
1. Arquivo de configuração do aplicativo
Usado principalmente para configuração automática de projetos Spring Boot
2. arquivo de configuração de inicialização
Existem vários cenários de aplicação, como segue:
① Ao usar o centro de configuração SpringCloudConfig,
Neste momento, você precisa adicionar o arquivo de configuração de bootstrap
Conecte-se às propriedades de configuração do centro de configuração para carregar
Informações de configuração do centro de configuração ;
② Alguns atributos fixos que não podem ser substituídos;
③ Alguns cenários de criptografia/descriptografia;
4. Quais são os formatos dos arquivos de configuração do SpringBoot? Qual é a diferença?
.properties e .yml , a diferença entre eles é principalmente o livro
o formato de gravação é diferente
1. .propriedades
app.user.name = javastack
2. .yml
app:
user:
name: javastack
Além disso, o formato .yml não oferece suporte a @PropertySource
Configuração de importação de anotação
5. Qual é a anotação principal do SpringBoot? Em quais anotações ele consiste principalmente?
A anotação acima da classe de inicialização é @SpringBootApplication ,
É também a anotação principal do SpringBoot
A combinação principal contém as 3 anotações a seguir:
① @SpringBootConfiguration : Combinado
Anotação @Configuration para implementar arquivos de configuração
A função de
② @EnableAutoConfiguration : abrir a configuração automáticaConfigure automaticamente a função, você também pode desligar uma determinada configuração automática
Opções configuradas, como desligar a função de configuração automática da fonte de dados:
@SpringBootApplication(excluir =
{ DataSourceAutoConfiguration.class })
③ @ComponentScan : verificação de componente Spring
6. Quais são as maneiras de habilitar os recursos do SpringBoot?
① Herdar o projeto spring-boot-starter-parent
② Importe o projeto spring-boot-dependencies de acordo com
confiar
7. O SpringBoot precisa de um contêiner independente para funcionar?
Você não precisa, contêineres integrados como Tomcat/Jetty
8. Quais são as formas de executar o SpringBoot?
① Use comandos para empacotar ou executar em um contêiner
② Execute com plugin Maven/Gradle
③ Execute diretamente o método principal para executar
9. Qual é o princípio da configuração automática do SpringBoot?
Anote @EnableAutoConfiguration,
@Configuração, @ConditionalOnClass
É o núcleo da configuração automática, antes de tudo deve ser uma configuração
Arquivo de configuração e, em seguida, dependendo se existe esta classe no caminho da classe
vá para configuração automática
As anotações de configuração automática do Spring Boot são
@EnableAutoConfiguration, acima
As classes @Import podem ser encontradas abaixo de autoload auto
mapeamento 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 carregará o caminho de classe e as classes configuradas automaticamente mapeadas na configuração META-INF/spring.factories em todos os pacotes 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,\
...
Vamos dar uma olhada nas anotações de implementação da configuração automática da fonte de dados
@Configuration
@ConditionalOnClass({ DataSource.class, EmbeddedDatabaseType.class })
@EnableConfigurationProperties(DataSourceProperties.class)
@Import({ Registrar.class, DataSourcePoolMetadataProvidersConfiguration.class })
public class DataSourceAutoConfiguration {
...
@Configuration,@ConditionalOnClass就是自动配置的核心,首先它得是一个配置文件,其次根据类
10. Como entender os Starters no SpringBoot?
Starters pode ser entendido como um starter , que contém um
Uma série de pacotes de dependências que podem ser integrados ao aplicativo, você pode
Integração completa do Spring e outras tecnologias sem
Precisa encontrar código de amostra e pacotes dependentes em todos os lugares
Se você quiser usar Spring JPA para acessar o banco de dados, basta
Para ingressar na inicialização do spring-boot-starter-data-jpa
Você pode usar a dependência do dispositivo