您好,登錄后才能下訂單哦!
springboot 配置注解是什么意思?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!
一、概述
Spring Boot設計目的是用來簡化新Spring應用的初始搭建以及開發過程。Spring Boot并不是對Spring功能上的增強,而是提供了一種快速使用Spring的方式。
二、特性
①創建獨立的Spring應用程序
②嵌入的Tomcat,無需部署WAR文件
③簡化Maven配置
④自動配置Spring
⑤提供生產就緒型功能,如指標,健康檢查和外部配置
⑥開箱即用,沒有代碼生成,也無需XML配置。
三、注解說明
@SpringBootApplication Spring Boot項目的核心注解,主要目的是開啟自動配置;
@Configuration 作用于類上,相當于一個xml配置文件,配置Spring
@Bean 作用于方法上,相當于xml配置中的<bean>
@ComponentScan 默認掃描@SpringBootApplication所在類的同級目錄以及它的子目錄。
@PropertySource("classpath:env.properties") 讀取外部的配置文件,通過@Value注解獲取值
@Transactional 申明事務
四、SpringBoot目錄文件結構講解
src/main/java:存放代碼
src/main/resources
static: 存放靜態文件,比如 css、js、image, (訪問方式 http://localhost:8080/js/main.js)
templates: 存放靜態頁面jsp,html,tpl
config: 存放配置文件,application.properties
五、SpringBoot默認加載文件的路徑
/META-INF/resources/ /resources/ /static/ /public/
SpringBoot默認配置
spring.resources.static-locations = classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/
六、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
④不被熱部署的文件
1、/META-INF/maven, /META-INF/resources, /resources, /static, /public, or /templates
2、指定文件不進行熱部署 spring.devtools.restart.exclude=static/**,public/**
3、手工觸發重啟 spring.devtools.restart.trigger-file=trigger.txt
改代碼不重啟,通過一個文本去控制
七、自定義啟動Banner
①訪問http://patorjk.com/software/taag/#p=display&h=3&v=3&f=4Max&t=itcast%20Spring%20Boot
②拷貝生成的字符到一個文本文件中,并且將該文件命名為banner.txt
③將banner.txt拷貝到項目的resources目錄中
八、全局配置文件(application.properties或application.yml)
server.port=8088 server.servlet-path=*.html server.tomcat.uri-encoding=UTF-8 logging.level.org.springframework=DEBUG
更多點擊參見官網地址
九、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
(更多配置見百度)
十、常用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
十一、SpringBoot使用任務調度
(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<String> 返回結果 AsyncResult<String>("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 <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
十四、SpringBoot多環境配置
①不同環境使用不同配置
例如數據庫配置,在開發的時候,我們一般用開發數據庫,而在生產環境的時候,我們是用正式的數據
②配置文件存放路徑
classpath根目錄的“/config”包下
classpath的根目錄下
③spring boot允許通過命名約定按照一定的格式(application-{profile}.properties)來定義多個配置文件
感謝各位的閱讀!看完上述內容,你們對springboot 配置注解是什么意思大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。