Preparando-se para a certificação profissional da Spring. Bota de mola

Saudações a todos. Este artigo abordará as principais perguntas sobre o tópico "Spring Boot". Destina-se a desenvolvedores iniciantes e pode ser útil na preparação para uma entrevista. Acabou sendo bastante compacto em comparação com outros artigos.


Sumário
  1. Injeção de dependência, contêiner, IoC, feijão
  2. AOP (programação orientada a aspectos)
  3. JDBC, Transações, JPA, Dados da Primavera
  4. Bota de mola
  5. Spring mvc
  6. Segurança de primavera
  7. REST
  8. Teste




Perguntas


O que é uma bota de mola?

Spring Boot é um conjunto de módulos pré-configurados que funcionam no Spring Framework e simplificam a configuração de um aplicativo Spring.


Aqui estão alguns módulos centrais:


  • Dependências de inicialização por mola. Contém dependências de versão.
  • Spring-boot-starter-parent. Pom.xml pai
  • Arrancadores de arranque com mola. Módulo pai para iniciantes
  • Spring-boot-autoconfigure. Contém módulos para iniciantes de ajuste automático
  • Atuador de inicialização por mola. Permite monitorar o aplicativo e gerenciar sua criação

Quais são os benefícios do Spring Boot?
  • Configure automaticamente muitas configurações para evitar o código padrão
  • Permite que você configure facilmente o aplicativo quando as configurações padrão não forem adequadas
  • O projeto Spring Boot pode ser compilado no arquivo JAR independente
  • Fornece um conjunto de dependências que já foram testadas para funcionar corretamente entre si
  • Possui contêineres da Web integrados que facilitam o teste do aplicativo.

Como ele trabalha? Como ele entende o que e como configurar?

Ele assume o que você precisa com base nas dependências no caminho de classe. “Contrato de configuração” - ele irá configurar automaticamente o Spring com configurações especialmente selecionadas, que poderão ser substituídas.


Existem várias anotações para isso, @ConditionalOnClass , @ConditionalOnBean , @ConditionalOnMissingBean e @ConditionalOnMissingClass , que permitem aplicar condições às classes @ Configuration e aos métodos @ Bean nessas classes.


Por exemplo:


  • Um bean será criado apenas se uma dependência específica estiver no caminho de classe.


    Use @ConditionalOnClass , definindo o nome da classe no caminho da classe.


  • Um bean será criado apenas se não houver nenhum desse tipo ou com esse nome no contêiner.


    Use @ConditionalOnMissingBean , configurando o nome ou o tipo do bean para verificar lá.



O que afeta a configuração do Spring Boot?

Há uma lista de anotações de condição, cada uma das quais usada para controlar a criação de beans. Aqui está uma lista dessas anotações (na verdade existem mais):


Anotação
Condição para passar
@ConditionalOnClass
Presença de classe no caminho de classe
@ConditionalOnMissingClass
Classe ausente no caminho de classe
@ConditionalOnBean
A presença de uma posição ou seu tipo (classe de bean)
@ConditionalOnMissingBean
Falta de uma lixeira ou seu tipo
@ConditionalOnProperty
Presença de propriedade de primavera
@ConditionalOnResource
A presença de um arquivo de recurso
@ConditionalOnWebApplication
Se este for um aplicativo Web, o WebApplicationContext será usado.
@ConditionalOnNotWebApplication
Se não for um aplicativo da web

Como a propriedade é definida? Onde está o PropertySource padrão localizado no Spring Boot?

O Spring Boot usa uma ordem especial de PropertySource para permitir a substituição de valores de propriedade. Aqui está a ordem das fontes para obter propriedades do aplicativo:


  1. Configurações gerais do diretório ~ / spring-boot devtools.properties
  2. Configurações da anotação @TestPropertySource dos testes
  3. Propriedades de Attributes @ SpringBootTest #
  4. Argumentos da linha de comando
  5. Propriedades de SPRING_APPLICATION_JSON
  6. Parâmetros para inicializar ServletConfig
  7. Parâmetros para inicializar ServletContext
  8. Atributos JNDI de java: comp / env
  9. Propriedades do sistema Java (System.getProperties ())
  10. Variáveis ​​do SO
  11. RandomValueProperySource
  12. Propriedades para perfis, por exemplo, YAML ou application- {profile} .properties
  13. application.properties e yaml não do seu jar
  14. application.properties e yaml do seu jar
  15. @PropertySource na classe @ Configuration
  16. Propriedade por padrão (definida por SpringApplication.setDefaultProperties() )

Adicione também que property.yml sempre substitua property.properties.


Descreva as principais anotações e configurações do Spring Boot?

A @SpringBootApplication fornece três propriedades:


  • @EnableAutoConfiguration - ativa o mecanismo de configuração automática do Spring Boot
  • @ComponentScan - ativa a verificação de componentes no pacote da classe em que está localizada
  • @Configuration - permite registrar mais. feijões em contexto

Aqui estão outras anotações importantes:


@EnableConfigurationProperties - permite usar @ConfigurationProperties com a anotação @ConfigurationProperties


@ConfigurationProperties - permite associar arquivos de arquivos com caixas


@WebMvcTest - usado para testes do Spring MVC


@SpringBootTest - usado quando você precisa das funções do Spring Boot nos testes


@DataJpaTest - usado para testar componentes JPA


Quais são as diferenças entre um contêiner embutido e um WAR?

O contêiner incorporado é o servidor que acompanha o aplicativo final, enquanto o WAR é um archive que pode ser implementado em um servidor externo.


Os contêineres de servlet são bons para gerenciar vários aplicativos no mesmo host, mas não são muito úteis para gerenciar apenas um aplicativo.


Com um ambiente em nuvem, usar um aplicativo por máquina virtual é a maneira preferida e mais comum. As estruturas modernas desejam ser mais compatíveis com as nuvens, portanto, elas estão mudando para contêineres incorporados.


Quais contêineres embutidos o Spring suporta?

O Spring Boot suporta Tomcat, Jetty e Undertow.
O padrão é TomCat. Para alterar o contêiner, basta adicionar a dependência desejada no pom.xml.


O que o @EnableAutoConfiguration faz?

Ele permite que você use a configuração automática. A configuração automática no Spring Boot tenta criar e configurar beans com base nas dependências no caminho de classe, para permitir que o desenvolvedor comece a trabalhar rapidamente com várias tecnologias e remova o código padrão.


O Spring Boot verifica os componentes? Onde ele os procura por padrão?

Sim, ocorre se houver uma anotação @SpringBootApplication que contenha uma anotação @ComponentScanning .


Por padrão, o Spring procura beans no mesmo pacote que a classe anotada. Isso pode ser substituído pela especificação de classes (ou pacote) nas scanBasePackage ou scanBasePackage .


O que é o Spring Boot Starter POM? Como isso pode ser útil?

Os iniciantes fornecem um conjunto de descritores de dependência úteis que você pode incluir em seu aplicativo. Você obtém uma fonte para tecnologias de primavera e relacionadas sem precisar pesquisar e copiar e colar descritores de implantação.
Por exemplo, se você deseja iniciar o Spring JPA, basta adicionar a dependência spring-boot-starter-data-jpa ao seu projeto.


Os iniciantes contêm a maioria das dependências necessárias para executar o projeto, trabalhar de forma rápida e consistente e oferecer suporte a conjuntos de dependências transitivas.


Você pode controlar o log através do Spring Boot?

Sim Por padrão, as mensagens com prioridades ERROR, WARN, INFO serão exibidas no aplicativo. Para ativar a saída dos níveis DEBUG ou TRACE, você deve usar as --trace --debug / --trace ou definir as propriedades da propriedade debug / trace = true.


 logging.level.root = WARN logging.level.org.springframework.web = DEBUG logging.level.org.hibernate = ERROR 

Por padrão, o Sprin Boot registra apenas o console. Se desejar registrar eventos em um arquivo, você deve configurar as propriedades logging.file ou logging.path como true (por exemplo, em application.properties).


Registro de cores


Nos consoles que suportam ANSI, para melhorar a legibilidade, as mensagens de diferentes níveis podem ser destacadas com cores diferentes. É assim que é configurado no arquivo de propriedades:


 logging.pattern.console=%clr(%d{yyyy-MM-dd HH:mm:ss}) {yellow} 

Se você deseja gravar foi para outros arquivos, também pode configurar este (YAML):


 logging: path: /var/logs/ file: bookWarn.log level: root: WARN org. springframework: security: DEBUG 

Source: https://habr.com/ru/post/pt471312/


All Articles