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 à 60e23eb984d18edbb092da6b8f295aba
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/
Configuration par défaut de SpringBoot
spring.resources.static-locations = classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/
6. Déploiement à chaud de Spring Boot
①Ajouter des dépendances Construire le projet automatiquement
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>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/**
Modifiez le code sans redémarrer, contrôlez-le via un texte
Bannière de démarrage personnalisée
②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=DEBUG9. 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-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 :
(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
②增加Futuref7e83be87db5cd2d9a8a0b8117b38cd4 返回结果 AsyncResultf7e83be87db5cd2d9a8a0b8117b38cd4("task执行完成");
③如果需要拿到结果 需要判断全部的 task.isDone()
十二、SpringBoot拦截器、过滤器、监听器
(1)SpringBoot启动默认加载的Filter
characterEncodingFilter hiddenHttpMethodFilter httpPutFormContentFilter requestContextFilter
(2)Filter优先级
Ordered.HIGHEST_PRECEDENCE Ordered.LOWEST_PRECEDENCE
(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========"); }
@Override
public void requestInitialized(ServletRequestEvent sre) { System.out.println("======requestInitialized========"); }
(5)自定义拦截器
1)implements WebMvcConfigurer
@Configuration
public class CustomWebMvcConfigurer implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LoginIntercepter()).addPathPatterns("/api2/*/**"); //.excludePathPatterns("/api2/xxx/**"); WebMvcConfigurer.super.addInterceptors(registry); } }
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>
(2)war包方式启动
a.在pom.xml中将打包形式 jar 修改为war 0d5281799fde01379a2f5b5ea0c57ee5warb381c39f05d1340a5f54760f38fa259d
b.添加构建项目名称 1079ce9524e93e3b51b338f3745023bdxdclass_springboot8bfec31baefed0960a447581fc9bf1d0
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); } }
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!