最新學習springboot 配置註解

1、概述
      Spring Boot設計目的是用來簡化新Spring應用的初始搭建以及開發過程。Spring Boot並非對Spring功能上的加強,而是提供了一種快速使用Spring的方式。css

2、特性
①建立獨立的Spring應用程序
②嵌入的Tomcat,無需部署WAR文件
③簡化Maven配置
④自動配置Spring
⑤提供生產就緒型功能,如指標,健康檢查和外部配置
⑥開箱即用,沒有代碼生成,也無需XML配置。
3、註解說明
@SpringBootApplication         Spring Boot項目的核心註解,主要目的是開啓自動配置;
@Configuration 做用於類上,至關於一個xml配置文件,配置Spring
@Bean 做用於方法上,至關於xml配置中的<bean>
@ComponentScan 默認掃描@SpringBootApplication所在類的同級目錄以及它的子目錄。
@PropertySource("classpath:env.properties") 讀取外部的配置文件,經過@Value註解獲取值
@Transactional 申明事務
4、SpringBoot目錄文件結構講解
src/main/java:存放代碼
src/main/resources
static:    存放靜態文件,好比 css、js、image, (訪問方式 http://localhost:8080/js/main.js)
templates: 存放靜態頁面jsp,html,tpl
config:   存放配置文件,application.properties
5、SpringBoot默認加載文件的路徑
/META-INF/resources/
/resources/
/static/
/public/
       SpringBoot默認配置
spring.resources.static-locations = classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/
6、Spring Boot熱部署
①添加依賴            
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
②Compiler 勾選中左側的Build Project automatically
③idea設置Auto-Compile,而後 Shift+Ctrl+Alt+/,選擇Registry
勾選compiler.automake.allow.when.app.running
④不被熱部署的文件
  一、/META-INF/maven, /META-INF/resources, /resources, /static, /public, or /templates
  二、指定文件不進行熱部署 spring.devtools.restart.exclude=static/**,public/**
  三、手工觸發重啓 spring.devtools.restart.trigger-file=trigger.txt
  改代碼不重啓,經過一個文本去控制
7、自定義啓動Banner
①訪問http://patorjk.com/software/taag/#p=display&h=3&v=3&f=4Max&t=itcast%20Spring%20Boot
②拷貝生成的字符到一個文本文件中,而且將該文件命名爲banner.txt
③將banner.txt拷貝到項目的resources目錄中
8、全局配置文件(application.properties或application.yml)
server.port=8088
server.servlet-path=*.html
server.tomcat.uri-encoding=UTF-8 
logging.level.org.springframework=DEBUG
更多點擊參見官網地址html

9、Starter pom前端

spring-boot-starter 核心Spring Boot starter,包括自動配置支持,日誌和YAML
spring-boot-starter-amqp         對高級消息隊列協議的支持,經過spring-rabbit實現
spring-boot-starter-aop 對面向切面編程的支持,包括spring-aop和AspectJ
spring-boot-starter-data-elasticsearch 對Elasticsearch搜索擎的支持,包括spring-data-elasticsearch
spring-boot-starter-data-jpa         對Java持久化API的支持,包括spring-data-jpa,spring-orm和Hibernate
spring-boot-starter-jdbc         對JDBC數據庫的支持
spring-boot-starter-redis         對REDIS鍵值數據存儲的支持,包括spring-redis
spring-boot-starter-data-redis
spring-boot-starter-security         對spring-security的支持
spring-boot-starter-test         對經常使用測試依賴的支持,包括JUnit, Hamcrest和Mockito,spring-test
spring-boot-starter-velocity         對Velocity模板引擎的支持
spring-boot-starter-activemq
spring-boot-starter-freemarker
spring-boot-starter-thymeleaf
spring-boot-starter-web 對全棧web開發的支持,包括Tomcat和spring-webmvc
spring-boot-starter-webflux
(更多配置見百度)
10、經常使用json框架
(1)JavaBean序列化爲Json,性能:
Jackson > FastJson > Gson > Json-lib 
(2)jackson處理相關注解
指定字段不返回:@JsonIgnore
指定日期格式:   @JsonFormat(pattern="yyyy-MM-dd hh:mm:ss",locale="zh",timezone="GMT+8")
空字段不返回:   @JsonInclude(Include.NON_NUll)
指定別名: @JsonProperty
11、SpringBoot使用任務調度
(1)使用步驟:
①啓動類裏面 @EnableScheduling開啓定時任務,自動掃描
②定時任務業務類 加註解 @Component被容器掃描
③定時執行的方法加上註解 @Scheduled(fixedRate=2000) 按期執行一次
(2)經常使用定時任務表達式配置和在線生成器
cron 定時任務表達式 @Scheduled(cron="*/1 * * * * *") 表示每秒
1)crontab 工具  https://tool.lu/crontab/
fixedRate: 定時多久執行一次(上一次開始執行時間點後xx秒再次執行;)
fixedDelay: 上一次執行結束時間點後xx秒再次執行
fixedDelayString:  字符串形式,能夠經過配置文件指定
(3)異步定時任務
啓動類裏面使用@EnableAsync註解開啓功能,自動掃描
定義異步任務類並使用@Component標記組件被容器掃描,異步方法加上@Async
①要把異步任務封裝到類裏面,不能直接寫到Controller
②增長Future<String> 返回結果 AsyncResult<String>("task執行完成");  
③若是須要拿到結果 須要判斷所有的 task.isDone()
12、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:攔截規則,支持正則
6)控制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執行->攔截後->過濾後
十3、兩種部署方式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  <packaging>war</packaging>
b.添加構建項目名稱 <finalName>xdclass_springboot</finalName>
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
十4、SpringBoot多環境配置
①不一樣環境使用不一樣配置
例如數據庫配置,在開發的時候,咱們通常用開發數據庫,而在生產環境的時候,咱們是用正式的數據
②配置文件存放路徑
classpath根目錄的「/config」包下
classpath的根目錄下
③spring boot容許經過命名約定按照必定的格式(application-{profile}.properties)來定義多個配置文件  
---------------------
做者:帶你去學習
來源:CSDN
原文:https://blog.csdn.net/zhou870498/article/details/80685774
版權聲明:本文爲博主原創文章,轉載請附上博文連接!java

相關文章
相關標籤/搜索