91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Boot的自動配置、Command-line Runner

發布時間:2020-05-25 20:25:00 來源:網絡 閱讀:315 作者:沙漏半杯 欄目:編程語言

接下來關于SpringBoot的一系列文章和例子,都來自《Spring Boot Cookbook》這本書,本文的主要內容是start.spring.io的使用、Spring Boot的自動配置以及CommandRunner的角色和應用場景。

1. start.spring.io的使用

首先帶你瀏覽http://start.spring.io/,在這個網址中有一些Spring Boot提供的組件,然后會給你展示如何讓你的Spring工程變得“Bootiful”,我稱之為“Boot化”。

在網站Spring Initializr上填對應的表單,描述Spring Boot項目的主要信息,例如Project Metadata、Dependency等。在Project Dependencies區域,你可以根據應用程序的功能需要選擇相應的starter。

Spring Boot starters可以簡化Spring項目的庫依賴管理,將某一特定功能所需要的依賴庫都整合在一起,就形成一個starter,例如:連接數據庫、springmvc、spring測試框架等等。簡單來說,spring boot使得你的pom文件從此變得很清爽且易于管理。

常用的starter以及用處可以列舉如下:

  • spring-boot-starter: 這是核心Spring Boot starter,提供了大部分基礎功能,其他starter都依賴于它,因此沒有必要顯式定義它。

  • spring-boot-starter-actuator:主要提供監控、管理和審查應用程序的功能。

  • spring-boot-starter-jdbc:該starter提供對JDBC操作的支持,包括連接數據庫、操作數據庫,以及管理數據庫連接等等。

  • spring-boot-starter-data-jpa:JPA starter提供使用Java Persistence API(例如Hibernate等)的依賴庫。

  • spring-boot-starter-data-*:提供對MongoDB、Data-Rest或者Solr的支持。

  • spring-boot-starter-security:提供所有Spring-security的依賴庫。

  • spring-boot-starter-test:這個starter包括了spring-test依賴以及其他測試框架,例如JUnit和Mockito等等。

  • spring-boot-starter-web:該starter包括web應用程序的依賴庫。

How do

首先我們要通過start.spring.io創建一個圖書目錄管理程序,它會記錄出版圖書的記錄,包括作者、審閱人、出版社等等。我們將這個項目命名為BookPub,具體的操作步驟如下:

  • 點擊“Switch to the full version.”,展示完整頁面;

  • Group設置為:org.test;

  • Artifact設置為:bookpub;

  • Name設置為:BookPub;

  • Package Name設置為:org.test.bookpub;

  • Packaging代表打包方式,我們選jar;

  • Spring Boot Version選擇最新的1.3.0;

  • 創建Maven工程,當然,對Gradle比較熟悉的同學可以選擇Gradle工程。

  • 點擊“Generate Project”下載工程包。

利用IDEA導入下載的工程,可以看到pom文件的主體如下如下所示:

????<groupId>com.test</groupId>
????<artifactId>bookpub</artifactId>
????<version>0.0.1-SNAPSHOT</version>
????<packaging>jar</packaging>
????
????<name>BookPub</name>
????<description>Demo?project?for?Spring?Boot</description>

????<parent>
????????<groupId>org.springframework.boot</groupId>
????????<artifactId>spring-boot-starter-parent</artifactId>
????????<version>1.3.0.RELEASE</version>
????????<relativePath/>?<!--?lookup?parent?from?repository?-->
????</parent>

????<properties>
????????<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
????????<java.version>1.8</java.version>
????</properties>

????<dependencies>
????????<dependency>
????????????<groupId>org.springframework.boot</groupId>
????????????<artifactId>spring-boot-starter-data-jpa</artifactId>
????????</dependency>
????????<dependency>
????????????<groupId>org.springframework.boot</groupId>
????????????<artifactId>spring-boot-starter-jdbc</artifactId>
????????</dependency>
????????<dependency>
????????????<groupId>com.h3database</groupId>
????????????<artifactId>h3</artifactId>
????????????<scope>runtime</scope>
????????</dependency>
????????<dependency>
????????????<groupId>org.springframework.boot</groupId>
????????????<artifactId>spring-boot-starter-test</artifactId>
????????????<scope>test</scope>
????????</dependency>
????</dependencies>
????
????<build>
????????<plugins>
????????????<plugin>
????????????????<groupId>org.springframework.boot</groupId>
????????????????<artifactId>spring-boot-maven-plugin</artifactId>
????????????</plugin>
????????</plugins>
????</build>

2. Spring Boot的自動配置

在Spring Boot項目中,xxxApplication.java會作為應用程序的入口,負責程序啟動以及一些基礎性的工作。@SpringBootApplication是這個注解是該應用程序入口的標志,然后有熟悉的main函數,通過SpringApplication.run(xxxApplication.class, args)來運行Spring Boot應用。打開SpringBootApplication注解可以發現,它是由其他幾個類組合而成的:@Configuration(等同于spring中的xml配置文件,使用Java文件做配置可以檢查類型安全)、@EnableAutoConfiguration(自動配置,稍后細講)、@ComponentScan(組件掃描,大家非常熟悉的,可以自動發現和裝配一些Bean)。

我們在pom文件里可以看到,com.h3database這個庫起作用的范圍是runtime,也就是說,當應用程序啟動時,如果Spring Boot在classpath下檢測到org.h3.Driver的存在,會自動配置H2數據庫連接。現在啟動應用程序來觀察,以驗證我們的想法。打開shell,進入項目文件夾,利用mvn spring-boot:run啟動應用程序,如下圖所示。

[圖片上傳失敗...(image-5c035d-1557557877934)]

可以看到類似Building JPA container EntityManagerFactory for persistence unit 'defaultHHH000412: Hibernate Core {4.3.11.Final}HHH000400: Using dialect: org.hibernate.dialect.H2Dialect這些Info信息;由于我們之前選擇了jdbc和jpa等starters,Spring Boot將自動創建JPA容器,并使用Hibernate4.3.11,使用H2Dialect管理H2數據庫(內存數據庫)。

3. 使用Command-line runners

我們新建一個StartupRunner類,該類實現CommandLineRunner接口,這個接口只有一個函數:public void run(String... args),最重要的是:這個方法會在應用程序啟動后首先被調用

How do

  • 在src/main/java/org/test/bookpub/下建立StartRunner類,代碼如下:

package?com.test.bookpub;import?org.slf4j.Logger;import?org.slf4j.LoggerFactory;import?org.springframework.boot.CommandLineRunner;public?class?StartupRunner?implements?CommandLineRunner?{????protected?final?Logger?logger?=?LoggerFactory.getLogger(StartupRunner.class);????@Override
????public?void?run(String...?strings)?throws?Exception?{
????????logger.info("hello");
????}
}
  • 在BookPubApplication類中創建bean對象,代碼如下:

????@Bean
????public?StartupRunner?schedulerRunner()?{????????return?new?StartupRunner();
????}

還是用mvn spring-boot:run命令啟動程序,可以看到hello的輸出。對于那種只需要在應用程序啟動時執行一次的任務,非常適合利用Command line runners來完成。Spring Boot應用程序在啟動后,會遍歷CommandLineRunner接口的實例并運行它們的run方法。也可以利用@Order注解(或者實現Order接口)來規定所有CommandLineRunner實例的運行順序。

利用command-line runner的這個特性,再配合依賴注入,可以在應用程序啟動時后首先引入一些依賴bean,例如data source、rpc服務或者其他模塊等等,這些對象的初始化可以放在run方法中。不過,需要注意的是,在run方法中執行初始化動作的時候一旦遇到任何異常,都會使得應用程序停止運行,因此最好利用try/catch語句處理可能遇到的異常。

最后給你們推薦一個群,如果你還想提升自己

歡迎加入Java技術交流群:659270626

本群提供免費的學習指導 提供Spring源碼、MyBatis、Netty、Redis,Kafka、Mysql、Zookeeper、Tomcat、Docker、Dubbo、Nginx、分布式、高并發、性能調優、等架構技術架構資料 以及免費的解答

不懂的問題都可以在本群提出來 之后還會有職業生涯規劃以及面試指導?


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安庆市| 永嘉县| 满洲里市| 东乌珠穆沁旗| 正宁县| 百色市| 开远市| 五家渠市| 玉树县| 于田县| 吴堡县| 淅川县| 大洼县| 吉隆县| 靖安县| 墨玉县| 锦州市| 怀化市| 府谷县| 孟州市| 西畴县| 西和县| 饶阳县| 五常市| 上栗县| 邹城市| 合作市| 时尚| 红桥区| 兴和县| 凤城市| 梅河口市| 岗巴县| 五家渠市| 定陶县| 南澳县| 岳西县| 高阳县| 左权县| 扶风县| 来安县|