Spring boot 的項目結構

1 .pom文件

1.1繼承

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

Spring Boot 的父級依賴,只有繼承它項目次才時Spring Boot項目,沒有它是不能做springboot的開發的。

spring-boot-starter-parent是一個特殊的starter,它用來提供相關的Maven依賴。使用它之後,常用的包依賴可以省去version標籤。

1.2依賴

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

啓動器依賴

這個是一個web啓動器包含的一個web全棧的jar包

1.3 插件

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

spring-boot-maven-plugin插件是將springboot的應用程序打包成jar包。將所有的應用啓動運行所需要的jar包都包含進來,從邏輯上將具備了獨立運行的條件。當運行“mvnpackage”進行打包後,使用“java-jar”命令就可以直接運行。

2.啓動類

  • 作用:
    • 啓動spring boot 項目 ,是基於Main方法來運行的
  • 注意點:
    • 啓動類在啓動的時候做註解掃描(@Controller、@Service…),掃描位置爲同包或子包下的註解,所以啓動類的位置應放於包的根下。

2.1啓動類與啓動器的區別

  • 啓動類表示項目的入口
  • 啓動器表示項目的座標

2.2創建何啓動類

@SpringBootApplication
public class BageApplication {

    public static void main(String[] args) {
        SpringApplication.run(BageApplication.class, args);
    }

}

需要:

  • @SpringBootApplication
  • SpringApplication.run(BageApplication.class, args);

3.啓動器

Spring Boot 將所有的功能場景都抽取出來,做成一個個的stater(啓動器),只需要在項目裏面引入這些stater相關場景的依賴都會導入進來,使我們開發更加的方便,不在成爲SSM的配置地獄。

spring-boot-starter

核心啓動器,包括自動配置支持,日誌記錄和YAML

地址

spring-boot-starter-activemq

使用Apache ActiveMQ進行JMS消息傳遞的入門者

地址

spring-boot-starter-amqp

使用Spring AMQP和Rabbit MQ的入門者

地址

spring-boot-starter-aop

使用Spring AOP和AspectJ進行面向方面編程的入門者

地址

spring-boot-starter-artemis

使用Apache Artemis進行JMS消息傳遞的入門者

地址

spring-boot-starter-batch

使用Spring批處理的初學者

地址

spring-boot-starter-cache

使用Spring Framework的緩存支持的初學者

地址

spring-boot-starter-cloud-connectors

使用Spring雲連接器的初學者簡化了與Cloud Foundry和Heroku等雲平臺中的服務的連接

地址

spring-boot-starter-data-cassandra

使用Cassandra分佈式數據庫和Spring數據的初學者Cassandra

地址

spring-boot-starter-data-cassandra-reactive

使用Cassandra分佈式數據庫和Spring數據Cassandra Reactive的入門者

地址

spring-boot-starter-data-couchbase

使用Couchbase面向文檔的數據庫和Spring Data Couchbase的入門者

地址

spring-boot-starter-data-couchbase-reactive

使用Couchbase面向文檔的數據庫和Spring Data Couchbase Reactive的入門者

地址

spring-boot-starter-data-elasticsearch

使用Elasticsearch搜索和分析引擎以及Spring Data Elasticsearch的初學者

地址

spring-boot-starter-data-jdbc

使用Spring數據JDBC的入門者

地址

spring-boot-starter-data-jpa

使用Spring Data JPA和Hibernate的初學者

地址

spring-boot-starter-data-ldap

使用Spring數據LDAP的入門者

地址

spring-boot-starter-data-mongodb

使用MongoDB面向文檔的數據庫和Spring Data MongoDB的初學者

地址

spring-boot-starter-data-mongodb-reactive

使用MongoDB面向文檔的數據庫和Spring Data MongoDB Reactive的入門者

地址

spring-boot-starter-data-neo4j

使用Neo4j圖形數據庫和Spring數據Neo4j的入門者

地址

spring-boot-starter-data-redis

使用Spring數據Redis和Lettuce客戶端使用Redis鍵值數據存儲的入門者

地址

spring-boot-starter-data-redis-reactive

使用Redis數據Redis被動和Lettuce客戶端的Redis鍵值數據存儲的入門者

地址

spring-boot-starter-data-rest

使用Spring Data REST通過REST公開Spring數據存儲庫的入門者

地址

spring-boot-starter-data-solr

使用帶有Spring Data Solr的Apache Solr搜索平臺的初學者

地址

spring-boot-starter-freemarker

使用FreeMarker視圖構建MVC Web應用程序的入門者

地址

spring-boot-starter-groovy-templates

使用Groovy模板視圖構建MVC Web應用程序的入門者

地址

spring-boot-starter-hateoas

使用Spring MVC和Spring HATEOAS構建基於超媒體的RESTful Web應用程序的入門者

地址

spring-boot-starter-integration

使用Spring Integration的入門者

地址

spring-boot-starter-jdbc

將JDBC與HikariCP連接池一起使用的入門者

地址

spring-boot-starter-jersey

使用JAX-RS和Jersey構建RESTful Web應用程序的入門者。替代spring-boot-starter-web

地址

spring-boot-starter-jooq

使用jOOQ訪問SQL數據庫的初學者。替代spring-boot-starter-data-jpaspring-boot-starter-jdbc

地址

spring-boot-starter-json

閱讀和寫作json的初學者

地址

spring-boot-starter-jta-atomikos

使用Atomikos進行JTA交易的入門者

地址

spring-boot-starter-jta-bitronix

使用Bitronix進行JTA事務的入門者

地址

spring-boot-starter-mail

使用Java Mail和Spring Framework的電子郵件發送支持的入門者

地址

spring-boot-starter-mustache

使用Mustache視圖構建Web應用程序的入門者

地址

spring-boot-starter-oauth2-client

使用Spring安全性OAuth2 / OpenID Connect客戶端功能的入門級產品

地址

spring-boot-starter-oauth2-resource-server

使用Spring安全性OAuth2資源服務器功能的入門者

地址

spring-boot-starter-quartz

使用Quartz調度程序的入門者

地址

spring-boot-starter-security

使用Spring安全性的入門者

地址

spring-boot-starter-test

用於測試包含JUnit,Hamcrest和Mockito等庫的Spring Boot應用程序的入門者

地址

spring-boot-starter-thymeleaf

使用Thymeleaf視圖構建MVC Web應用程序的入門者

地址

spring-boot-starter-validation

使用Java Bean驗證與Hibernate Validator的初學者

地址

spring-boot-starter-web

使用Spring MVC構建Web(包括RESTful)應用程序的入門者。使用Tomcat作爲默認嵌入式容器

地址

spring-boot-starter-web-services

使用Spring Web服務的入門者

地址

spring-boot-starter-webflux

使用Spring Framework的Reactive Web支持構建WebFlux應用程序的初學者

地址

spring-boot-starter-websocket

使用Spring Framework的WebSocket支持構建WebSocket應用程序的入門者

地址

4.配置文件

名稱爲:application

格式有兩種:

  • properties
  • YAML

注意點:他是由spring-boot-starter(核心啓動器,包括自動配置支持,日誌記錄和YAML)解析的

4.1 properties

格式是“鍵=值”的格式,文本註釋信息可以用"#"來註釋。

#修改toncat的端口號
server.port=8888

4.2YAML

YAML 格式的配置文件的擴展名可以爲yaml或者yml

4.2.1基本語法

  • 大小寫敏感
  • 使用縮進表示層級關係
  • 縮進不允許使用tab,只允許空格
  • 縮進的空格數不重要,只要相同層級的元素左對齊即可
  • '#'表示註釋

4.2.2 支持的數據類型:

  • 對象:鍵值對的集合,又稱爲映射(mapping)/ 哈希(hashes) / 字典(dictionary)
key: 
    child-key: value
    child-key2: value2
  • 數組:一組按次序排列的值,又稱爲序列(sequence) / 列表(list)

以 - 開頭的行表示構成一個數組

- A
  • 純量(scalars):單個的、不可再分的值

4.3 使用

server:
  port: 8888
  host:xxxx

4.4配置文件存放位置

  • 當前項目的根目錄中
  • 當前項目根目錄下的一個/config子目錄中
  • 項目的resources即classpath路徑中
  • 項目的resources即classpath路徑中下的/config子目錄中

4.5配置文件的優先級

  • 在同一個目錄下,有application.properties和application.yml文件,優先讀取application.properties

    注意點:默認使用第一個讀取到的

  • 在不同目錄下

    1. 當前項目根目錄下的一個/config子目錄中(最高)
    2. 當前項目的根目錄中
    3. 項目的resources即classpath路徑中下的/config子目錄中
    4. 項目的resources即classpath路徑中

4.6配置文件中的佔位符

語法:

${}

4.6.1作用

  • ${}中可以獲取框架提供的方法中的值如:random.int等。
  • 佔位符可以獲取配置文件中的一個鍵的值賦給另一個鍵爲值
zoo:
    age: 18
    dog: ${zoo.age}

4.6.2生成隨機數

# 隨機字符串
${random.value}
# 隨機int
${random.int}
# 隨機long
${random.long}
# 10以內的隨機數
${random.int(10)}
# 10-20的隨機數
${random.int[10,20]}
#生成一個uuid,有短槓連接
${random.uuid}

生成一個隨機的端口:

server:
  port: ${random.int(8000,9000)}

4.7 bootstrap配置文件

Spring Boot 中有兩個上下文對象,一種事 bootstrap,另一種是application。它倆是繼承的關係,application繼承與bootstrap。bootstrap是應用程序的父上下文,bootstrap優先於application。bootstrap主要用於從額外的資源來加載配置信息,含可以在本地外部配置文件中的解密屬性。這兩耳光上下文共用一個環境,它是任何Spring應用程序的外部屬性的來源。bootstrap裏面的屬性會優先加載,他們默認頁不能被本地相同配置覆蓋。

4.7.1特徵

  • bootstrap由父類applicationContext 加載,比application優先加載。
  • bootstrap中的屬性不能被覆蓋

4.7.2應用場景

  • 使用 spring cloud config 配置中心時,這時需要在bootstrap 配置文件中添加連接到配置中心的配置屬性來加載外部配置中心的配置信息。
  • 一些固定不能被覆蓋的屬性
  • 一些加密/解密的常景

5.Spring Boot 核心註解

5.1@SpringBootApplication

  • 是Spring Boot 的啓動類
  • 相當於聲明 @Configuration, @EnableAutoConfiguration and @ComponentScan.

5.2@SpringBootConfiguration

@SpringBootConfiguration註解是@Configuration註解的一個派生註解,根@Configuration註解的功能一致標註這個類是一個配置類,只不過@SpringBootConfiguration是 Spring Boot的註解 。

5.3@Configuration

通過bean對象代替spring中的 xml文件

5.4@EnableAutoConfiguration

  • Spring Boot 自動配置(auto-configuration):嘗試根據你添加的jar依賴自動配置你的Spring的應用
  • 相當於聲明 @AutoConfigurationPackage,@Import({AutoConfigurationImportSelrtor.class})

5.5@AutoConfigurationPackage

@AutoConfigurationPackage註解,自動注入主類下所在包下所有的加了註解的類(@Controller @service等),以及配置類(@Configurtion)

5.6@Import({AutoConfigurationImportSelrtor.class})

  • 直接導入普通的類
  • 導入實現了ImportSelrctor接口的類
  • 導入實現了ImportBeanDefinitionRegistrar接口的類

5.7ComponentScan

組件掃描,可以自動裝配一些Bean。

5.8@ConfigurationPropertiesScan

  • @ConfigurationPropertiesScan掃描配置屬性。
  • @EnableConfigurationProperties註解的作用使用@ConfigurationPropertiesScan註解的類生效
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章