Maison > Java > javaDidacticiel > Introduction détaillée aux annotations de configuration Springboot

Introduction détaillée aux annotations de configuration Springboot

不言
Libérer: 2019-02-01 11:36:39
avant
4485 Les gens l'ont consulté

Cet article vous apporte une introduction détaillée aux annotations de configuration de Springboot. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

1. Présentation

Spring Boot est conçu pour simplifier le processus initial de construction et de développement de nouvelles applications Spring. Spring Boot n'est pas une amélioration des fonctionnalités de Spring, mais fournit un moyen d'utiliser rapidement Spring.

2. Fonctionnalités

①Créer une application Spring indépendante
②Tomcat intégré, pas besoin de déployer des fichiers WAR
③Simplifier la configuration Maven
④Configurer automatiquement Spring
⑤ Fournit la production- fonctionnalités prêtes telles que des indicateurs, des contrôles de santé et une configuration externe
⑥ Fonctionne immédiatement sans génération de code et aucune configuration XML requise.

3. Description de l'annotation

@SpringBootApplication L'annotation principale du projet Spring Boot, l'objectif principal est d'activer la configuration automatique
@Configuration agit sur la classe, ce qui équivaut à ; un fichier de configuration XML. Configuration Spring
@Bean agit sur les méthodes, ce qui équivaut à
dans la configuration XML. @ComponentScan analyse le répertoire frère de la classe où se trouve @SpringBootApplication et ses sous-répertoires par défaut. .
@PropertySource("classpath:env.properties") lit le fichier de configuration externe et obtient la valeur via l'annotation @Value
@Transactional déclare la transaction

4. Explication de la structure du fichier du répertoire SpringBoot.

src/main/java : stocker le code
src/main/resources
static : stocker les fichiers statiques, tels que css, js, image, (méthode d'accès http://localhost:8080/ js/main. js)
templates : stocke les pages statiques jsp, html, tpl
config : stocke les fichiers de configuration, application.properties

5. Le chemin des fichiers chargés par défaut de SpringBoot

/META-INF/resources/
/resources/
/static/
/public/
Copier après la connexion

Configuration par défaut de SpringBoot

spring.resources.static-locations = classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/
Copier après la connexion

6. Déploiement à chaud de Spring Boot

①Ajouter des dépendances Construire le projet automatiquement

③jeu d'idées Auto- Compilez, puis Shift+Ctrl+Alt+/, sélectionnez Registre
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
Copier après la connexion
et vérifiez compiler.automake.allow.when.app.running

④Aucun fichier à déployer à chaud

1. /META-INF/ maven, /META-INF/resources, /resources, /static, /public ou /templates
2. Les fichiers spécifiés ne seront pas déployés à chaud spring.devtools .restart.exclude=static/**,public/**

3. Déclenchez manuellement le redémarrage spring.devtools.restart.trigger-file=trigger.txt

Modifiez le code sans redémarrer, contrôlez-le via un texte

Bannière de démarrage personnalisée

①Visitez http://patorjk.com/software/taag/#p=display&h=3&v=3&f=4Max&t=itcast%20Spring%20Boot

②Copiez les caractères générés dans un fichier texte et nommez le fichier Banner.txt
③Copiez Banner.txt dans le répertoire des ressources du projet

8. Fichier de configuration globale (application .properties ou application.yml)

Pour plus de clics , veuillez consulter l'adresse du site officiel

server.port=8088
server.servlet-path=*.html
server.tomcat.uri-encoding=UTF-8 
logging.level.org.springframework=DEBUG
Copier après la connexion
9. Starter pom


spring-boot-starter core Spring Boot starter, y compris la prise en charge de la configuration automatique, la journalisation et YAML

spring- boot-starter-amqp Prise en charge des protocoles avancés de file d'attente de messages, implémentés via spring-rabbit

spring-boot-starter-aop pour la programmation orientée aspect Prise en charge, y compris spring-aop et AspectJ

spring-boot-starter-data -elasticsearch Prise en charge du moteur de recherche Elasticsearch, y compris spring-data-elasticsearch

spring-boot-starter-data-jpa                                     API de persistance Java Prise en charge de spring-data-jpa, spring-orm et Hibernate
spring-boot- starter-jdbc Prise en charge des bases de données JDBC
spring-boot-starter-redis Prise en charge du stockage de données clé-valeur REDIS, y compris spring-redis
spring-boot-starter-data-redis
spring-boot-starter -security Prise en charge de spring-security
spring-boot-starter-test Prise en charge des dépendances de test courantes, notamment JUnit, Hamcrest et Mockito, spring-test
spring-boot-starter-velocity Prise en charge du moteur de modèle Velocity
spring-boot-starter-activemq
spring-boot-starter-freemarker
spring-boot -starter-thymeleaf
spring-boot-starter-web prend en charge le développement Web full-stack, y compris Tomcat et spring- webmvc
spring-boot-starter-webflux
(voir Baidu pour plus de configurations)

10. Frameworks json couramment utilisés

(1) Sérialisation JavaBean en Json, performances :

Jackson > FastJson > Gson > Json-lib

(2) Annotation liée au traitement Jackson

Le champ spécifié n'est pas renvoyé : @JsonIgnore

Format de date spécifié : @JsonFormat(pattern="yyyy -MM-jj hh:mm:ss",locale="zh",timezone="GMT+8")
Les champs vides ne sont pas renvoyés : @JsonInclude(Include.NON_NUll)
Spécifiez l'alias : @JsonProperty

11. SpringBoot utilise la planification des tâches

(1)使用步骤:

①启动类里面 @EnableScheduling开启定时任务,自动扫描
②定时任务业务类 加注解 @Component被容器扫描
③定时执行的方法加上注解 @Scheduled(fixedRate=2000) 定期执行一次

(2)常用定时任务表达式配置和在线生成器

cron 定时任务表达式 @Scheduled(cron="*/1 * * * * *") 表示每秒

crontab 工具 https://tool.lu/crontab/

ixedRate: 定时多久执行一次(上一次开始执行时间点后xx秒再次执行;)
fixedDelay: 上一次执行结束时间点后xx秒再次执行
fixedDelayString: 字符串形式,可以通过配置文件指定

(3)异步定时任务

启动类里面使用@EnableAsync注解开启功能,自动扫描
定义异步任务类并使用@Component标记组件被容器扫描,异步方法加上@Async
①要把异步任务封装到类里面,不能直接写到Controller
②增加Future 返回结果 AsyncResult("task执行完成");
③如果需要拿到结果 需要判断全部的 task.isDone()

十二、SpringBoot拦截器、过滤器、监听器

(1)SpringBoot启动默认加载的Filter

characterEncodingFilter
hiddenHttpMethodFilter
httpPutFormContentFilter
requestContextFilter
Copier après la connexion

(2)Filter优先级

Ordered.HIGHEST_PRECEDENCE
Ordered.LOWEST_PRECEDENCE
Copier après la connexion

(3)自定义Filter

1)使用Servlet3.0的注解进行配置
2)启动类里面增加 @ServletComponentScan,进行扫描
3)新建一个Filter类,implements Filter,并实现对应的接口
4) @WebFilter 标记一个类为filter,被spring进行扫描
urlPatterns:拦截规则,支持正则
5)控制chain.doFilter的方法的调用,来实现是否通过放行
不放行,web应用resp.sendRedirect("/index.html");
场景:权限控制、用户登录(非前端后端分离场景)等

(4)Servlet3.0的注解自定义原生Listener监听器

自定义Listener(常用的监听器 servletContextListener、httpSessionListener、servletRequestListener)
@WebListener

public class RequestListener implements ServletRequestListener {

@Override

public void requestDestroyed(ServletRequestEvent sre) {
// TODO Auto-generated method stub
System.out.println("======requestDestroyed========");
}
Copier après la connexion

@Override

public void requestInitialized(ServletRequestEvent sre) {
System.out.println("======requestInitialized========");
}
Copier après la connexion

(5)自定义拦截器
1)implements WebMvcConfigurer
@Configuration

public class CustomWebMvcConfigurer implements WebMvcConfigurer  {
Copier après la connexion

@Override

public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginIntercepter()).addPathPatterns("/api2/*/**");
//.excludePathPatterns("/api2/xxx/**");
WebMvcConfigurer.super.addInterceptors(registry);
}
}
Copier après la connexion

2)自定义拦截器 HandlerInterceptor
preHandle:调用Controller某个方法之前
postHandle:Controller之后调用,视图渲染之前,如果控制器Controller出现了异常,则不会执行此方法
afterCompletion:不管有没有异常,这个afterCompletion都会被调用,用于资源清理
3)按照注册顺序进行拦截,先注册,先被拦截

(6)对比

Filter是基于函数回调 doFilter(),而Interceptor则是基于AOP思想
Filter在只在Servlet前后起作用,而Interceptor够深入到方法前后、异常抛出前后等
Filter依赖于Servlet容器即web应用中,而Interceptor不依赖于Servlet容器所以可以运行在多种环境。
在接口调用的生命周期里,Interceptor可以被多次调用,而Filter只能在容器初始化时调用一次。
Filter和Interceptor的执行顺序:过滤前->拦截前->action执行->拦截后->过滤后

十三、两种部署方式jar和war

(1)jar包方式启动

添加maven插件,执行打包即可,启动命令: java -jar **.jar &

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Copier après la connexion

(2)war包方式启动

a.在pom.xml中将打包形式 jar 修改为war war
b.添加构建项目名称 xdclass_springboot
c.修改启动类

public class XdclassApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(XdclassApplication.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(XdclassApplication.class, args);
}
}
Copier après la connexion

 d.打包项目,启动tomcat

十四、SpringBoot多环境配置

①不同环境使用不同配置
例如数据库配置,在开发的时候,我们一般用开发数据库,而在生产环境的时候,我们是用正式的数据
②配置文件存放路径
classpath根目录的“/config”包下
classpath的根目录下
③spring boot允许通过命名约定按照一定的格式(application-{profile}.properties)来定义多个配置文件  

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!

Étiquettes associées:
source:cnblogs.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal