日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Boot 永远滴神!10分钟快速入门

發布時間:2025/3/16 javascript 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot 永远滴神!10分钟快速入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么是 SpringBoot

因為目前開發 WEB 應用,Spring Boot 是啟動 Spring 項目最快最流行的方式了。無論我們要構建一個什么樣的應用,它都可以讓我們盡可能快的啟動運行起來。前期基本上無需配置啥東西,而且內置應用服務器,讓我們兩三下就可以搞一個 生產級別應用出來,這對于 Java 程序員來說,只能用倆字來形容了,那就是幸福!

SpringBoot 和 Spring 的關系

可能因為 SpringBoot 實在是太驚艷了,網上有很多言論可能對很多小伙伴造成了一些誤解。這里我列舉幾個,看看你中了沒?

  • SpringBoot不是應用服務器;

  • 之所以有這個誤解,是因為 SpringBoot 可以將Web應用程序打包成可執行的 jar 文件,不用部署到我們傳統的Java應用服務器就可以運行。這是因為 SpringBoot 內置了一個Servlet容器(Tomcat、Jetty等),所以這個功能并不是 SpringBoot 本身的而是內嵌的 Servlet容器提供的

  • SpringBoot 沒有實現 JPA 或者 JMS(Java消息服務)等企業級 Java 規范。

  • 只不過是自動配置了支持這些特性的 Bean,比如自動配置了 Hibernate ,這些都是之前已經有的技術,并不是SpringBoot新實現的;

    SpringBoot 就是 Spring,它做了那些沒有它我們也會自己去做的 Spring Bean 配置。它利用的是 Spring4 的條件化配置特性,以及 Maven 和 Gradle 提供的傳遞依賴。

    Spring Boot 相比于 Spring 主要包含了以下四個核心功能:

  • 自動配置;

  • 起步依賴:告訴 Spring Boot 需要什么功能,它就能引入需要的庫。

  • 命令行界面:這個可以讓我們無須構建項目只寫代碼就可以完成完整的應用程序;

  • Actuator:應用監測和監控;

  • 搞清楚了 Spring Boot 其實就是一種開發 Spring 應用程序的快捷方式,那接下來,讓我們一起來感受疾風吧,看看它到底有多便捷。

    創建 SpringBoot 應用

    這里先說一下,本文我使用的 Spring Boot 版本是 2.5.2 ,要求你本地安裝的 JDK 至少是 1.8 或者更高的版本,Spring Boot 2.x 以上的版本最低要求就是 JDK 1.8 了。官方推薦的版本目前是 jdk8 和 jdk11,因為這倆版本目前是長期維護的。構建打包工具 Gradle 4+ or Maven 3.2+,最后就是宇宙最強 IDE,IntellJ IDEA,沒有之一。

    既然是入門,我們今天就以 Spring5 開始支持的響應式編程為例,讓大家感受下使用 Spring Boot 是如何開發響應式項目的。

  • 打開 https://start.spring.io/, ?選擇語言和構建工具以及依賴項,點擊如下圖所示;

  • 點擊 Generate 下載;

  • 解壓下載的壓縮包,進入到項目根目錄,然后使用 IDEA 打開 pom.xml ;

  • 需要注意的是,上面一步,需要先設置 pom.xml 的默認打開應用程序為 IDEA,或者你可以選擇 File --> New --> Project from Existing Sources... 然后選擇 pom.xml 效果也是一樣的,如下圖所示。

  • 打開后,刷新 Maven 依賴(第一次會有點慢,耐心等待),我們就可以得到下圖項目結構了;

  • 訪問數據庫

    Spring Boot 無縫集成了 關系型數據庫NOSQL 數據庫 。并且 Spring Boot 也提供了響應式的數據庫訪問支持。

    那我們如果想使用 Spring Boot 訪問數據庫,都需要做什么呢?穩住,你可能會震驚的。

    下面給大家看下我寫的響應式編程數據庫訪問的測試代碼,為了不依賴任何環境,讓大家可以快速、直觀的感受,我使用的是內存數據庫 h2。

    • 將下面的代碼,放到你的 Spring Boot 專屬啟動類中。

    @SpringBootApplication public?class?Springroad01Application?{public?static?void?main(String[]?args)?{SpringApplication.run(Springroad01Application.class,?args);}} //?測試數據庫訪問,容器啟動后會執行run方法 @Component class?DataWriter?implements?ApplicationRunner?{private?Logger?log?=?LoggerFactory.getLogger(DataWriter.class);private?DatabaseClient?client;private?UsersDao?usersDao;public?DataWriter(DatabaseClient?client,?UsersDao?usersDao)?{this.client?=?client;this.usersDao?=?usersDao;}@Overridepublic?void?run(ApplicationArguments?args)?{List<String>?statements?=?Arrays.asList("DROP?TABLE?IF?EXISTS?USERS;","CREATE?TABLE?IF?NOT?EXISTS?USERS?(?id?SERIAL?PRIMARY?KEY,?name?VARCHAR(100)?NOT?NULL);");statements.forEach(sql?->?client.sql(sql).fetch().rowsUpdated().doOnSuccess(count?->?log.info("Schema?created,?rows?updated:?{}",?count)).doOnError(error?->?log.error("got?error?:?{}",error.getMessage(),error)).subscribe());Flux.just("sevenluo","tonyzhu","jameschen").flatMap(name?->?usersDao.save(new?Users(null,name))).subscribe(user?->?log.info("User?saved:?{}",user));} } //?DAO?接口,不需要加注解,繼承了?ReactiveCrudRepository?會自動生成實例的 interface?UsersDao?extends?ReactiveCrudRepository<Users,?String>?{ }@Data @AllArgsConstructor @NoArgsConstructor class?Users?{@Idprivate?Integer?id;private?String?name;}
    • 執行 main 方法,輸入結果;

    就是這么赤雞,結束了,啥配置沒有,直接寫了幾行代碼就可以訪問數據庫了。

    REST 接口開發

    你應該還關心 Spring Boot 如何開發一個 REST 風格的 WEB 接口吧?別慌,我們直接用 Spring 支持的響應式編程來搞一個 REST 應用服務。但是對于 WEB 訪問用戶來說是看不出來我們使用了非阻塞的響應式編程的,來一手潤物細無聲。

    • 將下面的代碼放到啟動類中,就是一個響應式的 REST 接口就開發好了。

    • 測試一下,打開命令行,curl 測試一下(不是非要裝逼不用瀏覽器訪問,公司的大佬說程序員要多用shell環境,嗯!從小事開始練);

    溫馨提示,在 mac 上安裝 jq,直接使用 brew install jq 就會自動幫你安裝好了。

    好了,打完手工,沒啥搞頭,Spring Boot 永遠滴神!

    監控和管理應用

    我們的應用上線后,那肯定都是要上監控的,不然哪一天神不知鬼不覺死翹翹了,麻煩就大了。這個 Spring Boot 它就天生帶了可以替我們監控和管理的 Spring 應用的模塊工具:spring-boot-actuator 。

    像什么 健康檢查、審計、統計和HTTP追蹤等該有的它都有。值得一提的是 spring-boot-actuator 它還很 open ,支持與其它外部監控系統做整合。補充了它自身沒有一些好看的儀表盤、圖表、分析、告警等 酷炫吊炸天的能力。

    那怎么玩呢?

    確認你的應用添加了對應的模塊依賴;

    假如你使用的 maven,那看你的 pom.xml 中下面的依賴:

    <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency> </dependencies>

    那如果你使用的 gradle,對應的 build.gradle 文件中有下面的依賴:

    dependencies?{compile("org.springframework.boot:spring-boot-starter-actuator") }

    Actuator 通過 endpoint 來暴露 HTTP 請求 來監控和管理應用;

    應用啟動后,http://localhost:8080/actuator 會展示出所有通過 HTTP 暴露的 endpoint。

    因為太長了,我這里列出的只是一部分 endpoint,你自己一定要動手試下。

    就比如,/health ? 這個 endpoint,提供了關于應用健康的基礎信息。

    /metrics endpoint 展示了幾個非常有用的度量信息,比如 JVM內存使用情況、系統 CPU 使用情況、打開的文件等等。

    /loggers endpoint 展示了應用的日志和可以讓你在運行時改變日志等級。

    還有好多,下去都自己玩玩,動手就會了。

    友情提示,如果你的 http://localhost:8080/actuator 展示的 開放端點很少,那是因為 actuator 的 endpoint 可以顯式的被打開和關閉,明白了吧!

    默認情況下很多 endpoint 是被關閉掉了,你只需要在 application.properties 配置文件中增加如下配置即可。

    management.endpoint.health.show-details=always //顯示詳細的健康信息 management.endpoints.web.exposure.include=* //粗暴的全部打開,反正自己玩,任性

    這里我們就不多說這些 endpoint 每個的作用了, 如果你感興趣,可以給我留言,我會根據大家需求看下是否在出一期教程詳細介紹一下。

    當然除了上面默認顯示的應用健康信息,我們也可以自定義一個健康指標;

    我們可以選擇實現 HealthIndicator 接口來實現我們的目標;

    @SpringBootApplication public?class?Springroad01Application?{//?加上這個Bean就可以了@BeanHealthIndicator?healthIndicator()?{return?()?->?Health.up().withDetail("app",?"i?am?so?good").withDetail("error","開什么玩笑,老夫怎么可能有錯!").build();}@BeanRouterFunction<ServerResponse>?routes?(UsersDao?usersDao)?{return?RouterFunctions.route(GET("/users"),serverRequest?->?ok().body(usersDao.findAll(),Users.class));}public?static?void?main(String[]?args)?{SpringApplication.run(Springroad01Application.class,?args);}}

    一旦你加上我們上面自定義的健康指標,重啟應用,就會看到 health 這個 endpoint 將展示出我們增加的這些信息:

    安全控制

    對于應用安全的支持,那就繞不開 Spring Security 了。

    它可以輕松完成應用的鑒權、授權功能,同時也提供了對響應式編程的支持。

    接下來就展示下如果讓你的應用快速帶上安全套。

    • 加入 Spring-Security 依賴包;

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId> </dependency>
    • 內存中配置一個用戶,設置用戶名和密碼;

    @Bean //?內存中配置用戶名、密碼為?admin/admin,用戶角色為?USER MapReactiveUserDetailsService?users()?{return?new?MapReactiveUserDetailsService(User.withUsername("admin").password(PasswordEncoderFactories.createDelegatingPasswordEncoder().encode("admin")).roles("USER").build()); }
    • 驗證

    直接訪問,提示 401 錯誤,這個錯誤碼應該了然于心了吧。沒錯就是沒有權限的意思。

    加上用戶名、密碼我們再試試:

    curl?-vu?admin:admin?http://localhost:8080/actuator/health?|?jq

    加上用戶名和密碼令人期待的結果就返回了,是不是瞬間心情大好呢。

    上面我們僅僅是引入了 Spring-Security 包,然后加了兩三行代碼,沒有寫任何的攔截器驗證邏輯,我們的應用就具備了安全驗證功能,這也太 啊妹子ing 了吧。

    江湖再見

    此章節我們就完成了 Spring-Boot 的入門開發介紹。

    用10分鐘完成了包含 創建應用、訪問數據庫、REST接口開發、監控和管理、安全控制 的開發。

    章節中并沒有對具體的技術細節做講解,比如 Demo 中使用響應式編程、Spring Boot Actuator 端點的詳細講解等。

    僅僅是為了讓小伙伴們了解到 Spring Boot 的強大和便利,感受下 Spring 對我們程序員的友好。

    有道無術,術可成;有術無道,止于術

    歡迎大家關注Java之道公眾號

    好文章,我在看??

    新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!

    總結

    以上是生活随笔為你收集整理的Spring Boot 永远滴神!10分钟快速入门的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。