Dieser Artikel bietet Ihnen eine detaillierte Einführung in die Springboot-Konfiguration. Er hat einen gewissen Referenzwert. Ich hoffe, dass er für Sie hilfreich ist.
1. Übersicht
Spring Boot wurde entwickelt, um den anfänglichen Konstruktions- und Entwicklungsprozess neuer Spring-Anwendungen zu vereinfachen. Spring Boot ist keine Erweiterung der Spring-Funktionalität, sondern bietet eine Möglichkeit, Spring schnell zu nutzen.
2. Funktionen
①Erstellen Sie eine unabhängige Spring-Anwendung
②Eingebetteter Tomcat, keine Notwendigkeit, WAR-Dateien bereitzustellen
③Maven-Konfiguration vereinfachen
④Spring automatisch konfigurieren
⑤ Bietet Produktions- Bereite Funktionen wie Indikatoren, Gesundheitsprüfungen und externe Konfiguration
⑥ Funktioniert sofort, ohne Codegenerierung und ohne XML-Konfiguration.
3. Annotationsbeschreibung
@SpringBootApplication Die Hauptanmerkung des Spring Boot-Projekts besteht darin, die automatische Konfiguration zu ermöglichen, was äquivalent ist Eine XML-Konfigurationsdatei. Konfiguration Spring
@Bean wirkt auf Methoden, was 60e23eb984d18edbb092da6b8f295aba
in der XML-Konfiguration entspricht. @ComponentScan scannt standardmäßig das Geschwisterverzeichnis der Klasse, in der sich @SpringBootApplication befindet .
@PropertySource("classpath:env.properties") liest die externe Konfigurationsdatei und erhält den Wert über die @Value-Annotation
@Transactional deklariert die Transaktion
src/main/java: Code speichern
src/main/resources
static: Statische Dateien wie CSS, JS, Bild speichern (Zugriffsmethode http://localhost:8080/ js/main. js)
templates: speichert statische Seiten jsp, html, tpl
config: speichert Konfigurationsdateien, application.properties
/META-INF/resources/ /resources/ /static/ /public/SpringBoot-Standardkonfiguration
spring.resources.static-locations = classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/6. Spring Boot Hot Deployment ①Abhängigkeiten hinzufügen >
③idea set Auto-Compile, dann Umschalt+Strg+Alt+/, Wählen Sie Registry
und überprüfen Sie „compiler.automake.allow.when.app.running“
④Dateien, die nicht im laufenden Betrieb bereitgestellt werden
1. /META-INF/maven, /META-INF/resources, /resources, /static, /public oder /templates 2. Die angegebene Datei wird nicht im laufenden Betrieb bereitgestellt spring.devtools.restart.exclude=static /**,public/**
3. Lösen Sie die Datei manuell aus restart spring.devtools.restart.trigger-file=trigger.txt
7. Passen Sie das Startbanner an
①Besuchen Sie http://patorjk.com/software/taag/#p=display&h=3&v=3&f=4Max&t=itcast%20Spring%20Boot
③Banner.txt in das Ressourcenverzeichnis des Projekts kopieren
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>
9. Starter-Pom
Spring-Boot-Starter-Kern Spring-Boot-Starter, einschließlich automatischer Konfigurationsunterstützung, Protokolle und YAML
spring-boot-starter-amqp Unterstützung für erweiterte Nachrichten Warteschlangenprotokolle, implementiert durch Spring-Rabbit
Spring-Boot-Starter-Data-Elasticsearch Unterstützung für die Suchmaschine Elasticsearch, einschließlich spring-data-elasticsearch
spring-boot-starter-data-jpa Unterstützung für Java-Persistenz-API, einschließlich spring-data-jpa, spring-orm und Hibernate spring-boot-starter-jdbc Unterstützung für JDBC-Datenbanken
spring-boot-starter-redis Unterstützung für REDIS-Schlüsselwert-Datenspeicherung, einschließlich Spring-Redis
spring-boot-starter-data-redis
spring-boot-starter-security Unterstützung für spring-security
spring-boot-starter-test Unterstützung für gängige Testabhängigkeiten, einschließlich JUnit, Hamcrest und Mockito, Spring-Test
spring-boot-starter-velocity Unterstützung für die Velocity-Vorlagen-Engine
spring-boot-starter-activemq
spring-boot-starter-freemarker
spring-boot-starter-thymeleaf
spring -boot-starter-web unterstützt die Full-Stack-Webentwicklung, einschließlich Tomcat und spring-webmvc
spring-boot- starter-webflux
(Weitere Konfigurationen finden Sie in Baidu)
10. Häufig verwendetes JSON-Framework
(1) JavaBean wird in Json serialisiert, Leistung:
Jackson > ; Gson > Json-lib
Das angegebene Feld wird nicht zurückgegeben: @JsonIgnore
Geben Sie das Datumsformat an: @JsonFormat(pattern="yyyy-MM-dd hh:mm :ss",locale="zh",timezone="GMT+8") Leere Felder werden nicht zurückgegeben: @JsonInclude(Include.NON_NUll)
Alias angeben: @JsonProperty
11. SpringBoot verwendet Aufgabenplanung
(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)来定义多个配置文件
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in Springboot-Konfigurationsanmerkungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!