Spring Boot est un sous-projet de l'organisation open source Spring. Il s'agit d'une solution unique pour les composants Spring. Elle simplifie principalement la difficulté d'utilisation de
Spring, enregistre une configuration lourde et fournit divers lanceurs afin que les développeurs puissent obtenir. a commencé rapidement.
Développement rapide, intégration rapide, configuration simplifiée, conteneur de services intégré
SpringBoot est un framework Spring développé rapidement, SpringCloud est un framework de microservices complet, SpringCloud Depends. sur SpringBoot.
Spring Boot présente principalement les avantages suivants : il est facile de démarrer, améliore l'efficacité du développement et fournit un cadre de développement plus rapide et plus simple pour le développement Spring. Fonctionne immédiatement, sans configuration fastidieuse. Il fournit une série de fonctions non commerciales communes aux projets à grande échelle, telles que les serveurs embarqués, la gestion de la sécurité, la surveillance des données d'exploitation, le contrôle de santé et la configuration externe, etc. Le résumé de Spring Boot est de simplifier le codage, la configuration, le déploiement et la surveillance, etc.
De quelles annotations se compose-t-il principalement ? L'annotation sur la classe de démarrage est @SpringBootApplication, qui est également l'annotation principale de Spring Boot. La combinaison principale comprend les trois annotations suivantes : @SpringBootConfiguration : combine l'annotation @Configuration pour implémenter la fonction du fichier de configuration. @EnableAutoConfiguration : activez la fonction de configuration automatique ou désactivez une option de configuration automatique, par exemple :
@ComponentScan : analyse des composants Spring. java 如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
6. Quels frameworks de journalisation Spring Boot prend-il en charge ? Quel est le cadre de journalisation recommandé et par défaut ?
7. Le principe de fonctionnement de SpringBoot Starter
8. .X Quoi de neuf ? En quoi est-ce différent de 1.X ?
12. Spring Boot doit-il être exécuté dans un conteneur indépendant ?
14 Quelles sont les manières d'implémenter un déploiement à chaud dans SpringBoot ?
Spring-boot-devtools
15. choses
16. Méthode d'appel asynchrone asynchrone
Vous pouvez implémenter l'interface ApplicationRunner ou CommandLineRunner. Ces deux interfaces sont implémentées de la même manière. Elles
Spring Boot peut lier des variables via les annotations @PropertySource, @Value, @Environment, @ConfigurationPropertie
Spring JavaConfig est un produit de la communauté Spring. Il a été introduit dans Spring 3.0. Il fournit une méthode
pur Java pour configurer le conteneur Spring IOC. Cela permet donc d'éviter d'utiliser la configuration XML. Les avantages de l'utilisation de JavaConfig sont :
Configuration orientée objet. Les configurations étant définies sous forme de classes dans JavaConfig, les utilisateurs peuvent profiter pleinement des fonctionnalités orientées objet de Java. Une classe de configuration peut hériter d'une autre, remplacer ses méthodes @Bean, etc.
Réduisez ou éliminez la configuration XML. Les avantages d’une configuration externalisée basée sur les principes d’injection de dépendances ont été prouvés. Cependant, de nombreux développeurs ne souhaitent pas basculer entre XML et Java. JavaConfig fournit aux développeurs un moyen purement Java de configurer des conteneurs Spring similaires aux concepts de configuration XML. D'un point de vue technique, il est possible de configurer un conteneur en utilisant uniquement la classe de configuration JavaConfig, mais en pratique, de nombreuses personnes pensent que mélanger et faire correspondre JavaConfig avec XML est idéal.
Type sûr et convivial pour la refactorisation. JavaConfig fournit un moyen sécurisé de configurer les conteneurs Spring. Grâce à la prise en charge des génériques par Java
5.0, il est désormais possible de récupérer les beans par type plutôt que par nom, sans avoir besoin de transtypages ou de recherches basées sur des chaînes.
Config Java couramment utilisée :
@Configuration : Écrivez cette annotation sur la classe pour indiquer que cette classe est une classe de configuration
@ComponentScan : Ajoutez l'annotation @ComponentScan sur la classe de configuration. Cette annotation analysera toutes les classes de configuration sous le package où la classe se trouve par défaut, ce qui équivaut au
@Bean : injection de bean : équivalent au précédent < bean id="objectMapper"
class="org.codehaus.jackson.map.ObjectMapper" />
@EnableWebMvc : équivalent au
@ImportResource : équivalent à xml< import resource="applicationContextcache.xml">
Avec cet EnableAutoConfiguration, il va :
Charger les classes d'auto-configuration utilisables à partir du fichier de configuration META_INF/Spring.factories
Supprimer la duplication, et exclure les classes portées par les attributs Exclure et ExclureName
Filtre, et les conditions ( @Conditional) sera respecté. La classe de configuration automatique renvoie
21. Comment comprenez-vous l'ordre de chargement de la configuration Spring Boot ?
2.fichier YAML ;
3. Variables d'environnement système ;
4. Paramètres de ligne de commande ;
etc......
22.
23. Quels sont les avantages de la configuration YAML ?
24. Spring Boot peut-il utiliser la configuration XML ?
Spring Boot recommande d'utiliser la configuration Java au lieu de la configuration XML, mais la configuration XML peut également être utilisée dans Spring Boot. Une configuration XML peut être introduite via l'annotation @ImportResource.
25. Quel est le fichier de configuration de base de Spring Boot ? Quelle est la différence entre bootstrap.properties et application.properties ?
bootstrap (. yml ou . Properties) : boostrap est chargé par le ApplicationContext parent et est chargé avant l'application. La configuration prend effet dans la phase de démarrage du contexte d'application. De manière générale, nous utiliserons ce fichier dans la configuration Spring Cloud. Et les propriétés de boostrap ne peuvent pas être écrasées ;
application (. yml ou . Properties) : chargée par ApplicationContext, utilisée pour la configuration automatique du projet Spring Boot
Lors du développement du projet, certains fichiers de configuration peuvent être différents selon les environnements tels que le développement, les tests ou la production, comme la connexion à la base de données
la connexion, la configuration redis, etc. Alors, comment changer automatiquement de configuration dans différents environnements ? Spring nous fournit le mécanisme
profiles qui nous offre la fonction de basculer les fichiers de configuration d'avant en arrière.
Spring Profiles permet aux utilisateurs d'enregistrer des beans en fonction des fichiers de configuration (dev, test, prod, etc.). . Ainsi, lorsque l'application
est en cours de développement, seuls certains beans peuvent être chargés, tandis qu'en PRODUCTION, certains autres beans peuvent être chargés.
Supposons que notre exigence soit que la documentation Swagger soit uniquement disponible dans l'environnement QA et que toutes les autres documentations soient désactivées. Cela peut être fait en utilisant le fichier de configuration
. Spring Boot facilite grandement le travail avec les fichiers de configuration.
Configurez d'abord deux sources de données dans le fichier de configuration des propriétés, créez un mappeur de sous-traitance et utilisez @ConfigurationProperties# 🎜🎜# Lisez la configuration dans les propriétés et utilisez @MapperScan pour l'enregistrer dans le package du mappeur correspondant
DataSourceConfig
La seconde consiste à utiliser jta-atomikos pour implémenter la gestion distribuée des transactions
Vérifiez vos dépendances avec Snyk
Mettez à niveau vers la dernière version
Activez la protection CSRF
Utilisez la politique de sécurité du contenu pour empêcher les attaques XSS # 🎜🎜#
30. Comment implémenter la sécurité dans les applications Spring Boot ?
31. Comparez les avantages et les inconvénients de Spring Security et Shiro
une combinaison suggérée D'un point de vue purement technique, peu importe la façon dont vous la combinez, il n'y aura aucun problème. Par rapport à Spring Security
, Shiro présente principalement les caractéristiques suivantes :
Spring Security est un cadre de gestion de sécurité lourd ; Shiro est un cadre de gestion de sécurité léger
Spring Security Concept Configuration complexe et lourde ; concept simple et configuration simple
Spring Security est puissant ; Shiro a des fonctions simples
32 Comment résoudre les problèmes inter-domaines dans Spring Boot ?
@Configuration public class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowCredentials(true) .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") .maxAge(3600); } }
Spring fournit un moyen très utile de gérer les exceptions à l'aide de ControllerAdvice. Nous traitons toutes les exceptions levées par la classe contrôleur en implémentant une classe
ControlerAdvice.
sur les applications (par exemple si elles sont démarrées) et si leurs composants (comme les bases de données, etc.) fonctionnent correctement. Cependant, un inconvénient ou une difficulté majeur de l'utilisation de monitor
est que nous devons ouvrir le point de connaissance de l'application individuellement pour connaître son état ou sa santé. Imaginez un
如果项目比较大,类比较多,不使用@SpringBootApplication,采用@Compoment指定扫包范
围
在项目启动时设置JVM初始内存和最大内存相同
将springboot内置服务器由tomcat设置为undertow
这可以使用 DEV 工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat 将重新启
动。Spring Boot 有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。Java 开
发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。开发人员可以重新
加载 Spring Boot 上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。Spring
Boot 在发布它的第一个版本时没有这个功能。这是开发人员最需要的功能。DevTools 模块完全满
足开发人员的需求。该模块将在生产环境中被禁用。它还提供 H2 数据库控制台以更好地测试应用
程序。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>
在微服务中,一个完整的项目被拆分成多个不相同的独立的服务,各个服务独立部署在不同的服务
器上,各自的 session 被从物理空间上隔离开了,但是经常,我们需要在不同微服务之间共享
session ,常见的方案就是 Spring Session + Redis 来实现 session 共享。将所有微服务的
session 统一保存在 Redis 上,当各个微服务对 session 有相关的读写操作时,都去操作 Redis 上
的 session 。这样就实现了 session 共享,Spring Session 基于 Spring 中的代理过滤器实现,使
得 session 的同步操作对开发人员而言是透明的,非常简便。
使用了下面的一些依赖项
spring-boot-starter-web 嵌入tomcat和web开发需要servlet与jsp支持
spring-boot-starter-data-jpa 数据库支持
spring-boot-starter-data-redis redis数据库支持
spring-boot-starter-data-solr solr支持
mybatis-spring-boot-starter 第三方的mybatis集成starter
自定义的starter(如果自己开发过就可以说出来)
首先,这个 Starter 并非什么新的技术点,基本上还是基于 Spring 已有功能来实现的。首先它提
供了一个自动化配置类,一般命名为 XXXAutoConfiguration ,在这个配置类中通过条件注解来
决定一个配置是否生效(条件注解就是 Spring 中原本就有的),然后它还会提供一系列的默认配
置,也允许开发者根据实际情况自定义相关配置,然后通过类型安全的属性(spring.factories)注入
将这些配置属性注入进来,新注入的属性会代替掉默认属性。正因为如此,很多第三方框架,我们
只需要引入依赖就可以直接使用了。当然,开发者也可以自定义 Starter
在 Spring Boot 中使用定时任务主要有两种不同的方式,一个就是使用 Spring 中的 @Scheduled
注解,另一-个则是使用第三方框架 Quartz。
使用 Spring 中的 @Scheduled 的方式主要通过 @Scheduled 注解来实现。
我们都知道,新创建一个 Spring Boot 项目,默认都是有 parent 的,这个 parent 就是 springboot-starter-parent ,spring-boot-starter-parent 主要有如下作用:
定义了 Java 编译版本为 1.8 。
使用 UTF-8 格式编码。
继承自 spring-boot-dependencies,这个里边定义了依赖的版本,也正是因为继承了这个依
赖,所以我们在写依赖时才不需要写版本号。
执行打包操作的配置。
自动化的资源过滤。
自动化的插件配置。
针对 application.properties 和 application.yml 的资源过滤,包括通过 profile 定义的不同
环境的配置文件,例如 application-dev.properties 和 application-dev.yml。
总结就是打包用的
进入项目目录在控制台输入mvn clean package,clean是清空已存在的项目包,package进行打
包或者点击左边选项栏中的Mavne,先点击clean在点击package
Le jar finalement empaqueté par le projet Spring Boot est un jar exécutable. Ce type de jar peut être exécuté directement via java -jar xxx. Commande jar. Ce type de fichier jar ne peut pas être utilisé par d'autres projets comme un fichier jar ordinaire, et même s'il est dépendant, les classes qu'il contient ne peuvent pas être utilisées.
Le pot de Spring Boot ne peut pas être utilisé par d'autres projets, principalement parce que sa structure est différente de celle des pots ordinaires. Pour un package jar ordinaire, après décompression, ce sera directement le nom du package, et le package sera notre code. Cependant, après décompression, le jar exécutable empaqueté par Spring Boot sera notre code dans le répertoire BOOTINFclasses, il ne peut donc pas l'être. directement référencé. Si vous devez le référencer, vous pouvez ajouter une configuration dans le fichier pom.xml et regrouper le projet Spring Boot dans deux fichiers jar, un exécutable et un référençable.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!