2特愿、項(xiàng)目結(jié)構(gòu)與配置文件

1、POM文件

此為Spring Boot的核心勾缭,其所包含的主要內(nèi)容:

  1. 父項(xiàng)目

    集成Spring Boot dependencies父項(xiàng)目揍障,用于管理Spring Boot所有依賴,相當(dāng)于Spring Boot項(xiàng)目中的版本仲裁中心俩由,由他來決定所引入的依賴用哪個(gè)版本毒嫡。(使得用戶引入依賴時(shí)無需指定版本號(hào)!)

<parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.1.8.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
</parent>
  1. 本項(xiàng)目信息

          <groupId>com.zhbit</groupId>
          <artifactId>first_projcet</artifactId>
          <version>0.0.1-SNAPSHOT</version>
          <name>first_projcet</name>
          <description>Demo project for Spring Boot</description>
  1. 依賴引入

    用于自動(dòng)導(dǎo)入jar包

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

Spring Boot為每一個(gè)獨(dú)立的場(chǎng)景都抽取出來幻梯,做成一個(gè)個(gè)Starter啟動(dòng)器</mark>兜畸。用戶只需在<denpendency>中引入依賴,即可自動(dòng)配置碘梢、自動(dòng)下載依賴咬摇、 版本自動(dòng)控制。

具體查閱Spring Boot官方文檔煞躬。

#常用的Starter啟動(dòng)器包括:
  ?
  1)spring-boot-starter
  這是Spring Boot的核心啟動(dòng)器肛鹏,包含了自動(dòng)配置、日志和YAML恩沛。
  ?
  2)spring-boot-starter-actuator
  幫助監(jiān)控和管理應(yīng)用在扰。
  ?
  3)spring-boot-starter-amqp
  通過spring-rabbit來支持AMQP協(xié)議(Advanced Message Queuing Protocol)。
  ?
  4)spring-boot-starter-aop
  支持面向方面的編程即AOP复唤,包括spring-aop和AspectJ健田。
  ?
  5)spring-boot-starter-artemis
  通過Apache Artemis支持JMS的API(Java Message Service API)。
  ?
  6)spring-boot-starter-batch
  支持Spring Batch佛纫,包括HSQLDB數(shù)據(jù)庫妓局。
  ?
  7)spring-boot-starter-cache
  支持Spring的Cache抽象。
  ?

  8)spring-boot-starter-cloud-connectors
  支持Spring Cloud Connectors呈宇,簡(jiǎn)化了在像Cloud Foundry或Heroku這樣的云平臺(tái)上連接服務(wù)好爬。
  ?
  9)spring-boot-starter-data-elasticsearch
  支持ElasticSearch搜索和分析引擎,包括spring-data-elasticsearch甥啄。
  ?
  10)spring-boot-starter-data-gemfire
  支持GemFire分布式數(shù)據(jù)存儲(chǔ)存炮,包括spring-data-gemfire。
  ?
  11)spring-boot-starter-data-jpa
  支持JPA(Java Persistence API),包括spring-data-jpa穆桂、spring-orm宫盔、Hibernate。
  ?
  12)spring-boot-starter-data-mongodb
  支持MongoDB數(shù)據(jù)享完,包括spring-data-mongodb灼芭。
  ?
  13)pring-boot-starter-data-rest
  通過spring-data-rest-webmvc,支持通過REST暴露Spring Data數(shù)據(jù)倉(cāng)庫般又。
  ?
  14)spring-boot-starter-data-solr
  支持Apache Solr搜索平臺(tái)彼绷,包括spring-data-solr。
  ?
  15)spring-boot-starter-freemarker
  支持FreeMarker模板引擎茴迁。
  ?
  16)spring-boot-starter-groovy-templates
  支持Groovy模板引擎寄悯。
  ?
  17)spring-boot-starter-hateoas
  通過spring-hateoas支持基于HATEOAS的RESTful Web服務(wù)。
  ?
  18)spring-boot-starter-hornetq
  通過HornetQ支持JMS堕义。
  ?
  19)spring-boot-starter-integration
  支持通用的spring-integration模塊猜旬。
  ?
  20)spring-boot-starter-jdbc
  支持JDBC數(shù)據(jù)庫。
  ?
  21)spring-boot-starter-jersey
  支持Jersey RESTful Web服務(wù)框架胳螟。
  ?
  22)spring-boot-starter-jta-atomikos
  通過Atomikos支持JTA分布式事務(wù)處理昔馋。
  ?
  23)spring-boot-starter-jta-bitronix
  通過Bitronix支持JTA分布式事務(wù)處理。
  ?
  24)spring-boot-starter-mail
  支持javax.mail模塊糖耸。
  ?
  25)spring-boot-starter-mobile
  支持spring-mobile秘遏。
  ?
  26)spring-boot-starter-mustache
  支持Mustache模板引擎。
  ?
  27)spring-boot-starter-redis
  支持Redis鍵值存儲(chǔ)數(shù)據(jù)庫嘉竟,包括spring-redis邦危。
  ?
  28)spring-boot-starter-security
  支持spring-security。
  ?
  29)spring-boot-starter-social-facebook
  支持spring-social-facebook
  ?
  30)spring-boot-starter-social-linkedin
  支持pring-social-linkedin
  ?
  31)spring-boot-starter-social-twitter
  支持pring-social-twitter
  ?
  32)spring-boot-starter-test
  支持常規(guī)的測(cè)試依賴舍扰,包括JUnit倦蚪、Hamcrest、Mockito以及spring-test模塊边苹。
  ?
  33)spring-boot-starter-thymeleaf
  支持Thymeleaf模板引擎陵且,包括與Spring的集成。
  ?
  34)spring-boot-starter-velocity
  支持Velocity模板引擎个束。
  ?
  ?
  35)spring-boot-starter-web
  S支持全棧式Web開發(fā)慕购,包括Tomcat和spring-webmvc。
  ?
  36)pring-boot-starter-websocket
  支持WebSocket開發(fā)茬底。
  ?
  37)spring-boot-starter-ws
  支持Spring Web Services沪悲。
  ?
  ##Spring Boot應(yīng)用啟動(dòng)器面向生產(chǎn)環(huán)境的還有2種,具體如下:
  ?
  1)spring-boot-starter-actuator
  增加了面向產(chǎn)品上線相關(guān)的功能阱表,比如測(cè)量和監(jiān)控殿如。
  ?
  2)spring-boot-starter-remote-shell
  增加了遠(yuǎn)程ssh shell的支持贡珊。
  ?
  ##Spring Boot應(yīng)用啟動(dòng)器還有一些替換技術(shù)的啟動(dòng)器,具體如下:
  ?
  1)spring-boot-starter-jetty
  引入了Jetty HTTP引擎(用于替換Tomcat)涉馁。
  ?
  2)spring-boot-starter-log4j
  支持Log4J日志框架门岔。
  ?
  3)spring-boot-starter-logging
  引入了Spring Boot默認(rèn)的日志框架Logback。
  ?
  4)spring-boot-starter-tomcat
  引入了Spring Boot默認(rèn)的HTTP引擎Tomcat谨胞。
  ?
  5)spring-boot-starter-undertow
  引入了Undertow HTTP引擎(用于替換Tomcat)固歪。
  ?
  ##轉(zhuǎn)載自: http://412887952-qq-com.iteye.com/blog/2294926

4. 插件

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

2、主程序(入口)

? 項(xiàng)目路徑下的src\main\java\com\zhbit\first_projcet\FirstProjcetApplication.java為項(xiàng)目主程序胯努,其中里面包含程序的入口,代碼如下:

  //@SpringBootApplication標(biāo)注出本SpringBoot項(xiàng)目的主程序類逢防,并自動(dòng)啟動(dòng)其main方法叶沛。
  @SpringBootApplication
  public class FirstProjcetApplication {
  ?
      public static void main(String[] args) {
          //Spring應(yīng)用啟動(dòng)入口
          SpringApplication.run(FirstProjcetApplication.class, args);
      }
  }

@SpringBootApplication是SpringBoot的啟動(dòng)類注解,其是一個(gè)組合注解忘朝。包含:

  @Target(ElementType.TYPE)
  @Retention(RetentionPolicy.RUNTIME)
  @Documented
  @Inherited
  @SpringBootConfiguration
  @EnableAutoConfiguration
  @ComponentScan(excludeFilters = {
          @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
          @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
  public @interface SpringBootApplication {

@SpringBootApplication = (默認(rèn)屬性)@Configuration + @EnableAutoConfiguration + @ComponentScan灰署。

1、@SpringBootConfiguration繼承自@Configuration局嘁,二者功能也一致溉箕,標(biāo)注當(dāng)前類是配置類,并會(huì)將當(dāng)前類內(nèi)聲明的一個(gè)或多個(gè)以@Bean注解標(biāo)記的方法的實(shí)例納入到spring容器中悦昵,并且實(shí)例名就是方法名肴茄。
2、@EnableAutoConfiguration:是spring boot的核心功能但指,自動(dòng)配置寡痰。這個(gè)注釋告訴SpringBoot“猜”你將如何想配置Spring,基于你已經(jīng)添加jar依賴項(xiàng)。如果spring-boot-starter-web已經(jīng)添加Tomcat和Spring MVC,這個(gè)注釋自動(dòng)將假設(shè)您正在開發(fā)一個(gè)web應(yīng)用程序并添加相應(yīng)的spring設(shè)置.

(通常推薦將 @EnableAutoConfiguration 配置在 root 包下棋凳,這樣所有的子包、類都可以被查找到。)

3更舞、@ComponentScan通俗的講仇矾,@ComponentScan 注解會(huì)自動(dòng)掃描指定包下的全部標(biāo)有 @Component注解 的類,并注冊(cè)成bean拍棕,當(dāng)然包括 @Component 下的子注解@Service晓铆、@Repository、@Controller莫湘。@ComponentScan 注解沒有類似 尤蒿、的屬性。

3幅垮、項(xiàng)目結(jié)構(gòu)

項(xiàng)目總體結(jié)構(gòu).png

4腰池、項(xiàng)目配置文件

放至在src/main/resources下的 application.properties或application.yml(支持yaml語法)是本項(xiàng)目總體的配置文件。

1、配置內(nèi)容:
  • 可通過它設(shè)置默認(rèn)服務(wù)端口(server.port)示弓、數(shù)據(jù)庫鏈接字符串()讳侨、應(yīng)用程序默認(rèn)訪問路徑(server.context-path)等;

  • 在實(shí)體類自定義時(shí)奏属,標(biāo)注為<mark style="box-sizing: border-box; background: rgb(255, 255, 0); color: rgb(0, 0, 0);">@ConfigurationProperties(prefix = "前綴關(guān)鍵字")</mark>跨跨,配置文件中就能直接綁定該實(shí)體類,構(gòu)造時(shí)為其賦值默認(rèn)值囱皿。(字符串的配置信息稱為一個(gè)可調(diào)用的配置類)

補(bǔ)充擴(kuò)展:引入如下配置文件處理器勇婴,在配置文件綁定自定義實(shí)體類時(shí),就會(huì)有提示了嘱腥。

<dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-configuration-processor</artifactId>
       <optional>true</optional>
   </dependency>

配置文件中文支持:

如果配置文件中的中文在運(yùn)行時(shí)亂碼耕渴,可以通過打開IDEA的設(shè)置,找到<mark style="box-sizing: border-box; background: rgb(255, 255, 0); color: rgb(0, 0, 0);">文件編碼(File Encodings)</mark>齿兔,把Properties Files的文件默認(rèn)編碼改為UTF-8橱脸,并勾選轉(zhuǎn)換本地語言為ascii。

配置文件中文支持設(shè)置.png
2分苇、注入配置內(nèi)容

要想把配置信息轉(zhuǎn)化一個(gè)實(shí)體類(配置類)添诉,以便系統(tǒng)全局調(diào)用。這就需要在配置文件中指定內(nèi)容医寿,讓實(shí)體類定義 時(shí)自動(dòng)載入為默認(rèn)值栏赴。

方法一:常規(guī)屬性配置

只需在application.properties中定義屬性,直接在實(shí)體類定義時(shí)使用@Value注入糟红。

方法二:類型安全配置

在實(shí)體類自定義時(shí)艾帐,標(biāo)注為@ConfigurationProperties(prefix = "前綴關(guān)鍵字"),配置文件中就能直接綁定該實(shí)體類盆偿。這樣實(shí)體類構(gòu)造時(shí)為其賦值默認(rèn)值柒爸,使得單個(gè)字符串的配置信息,可以變成一個(gè)可直接調(diào)用的配置類事扭。

兩種方法的對(duì)比.png
3捎稚、引入外部配置文件

@ImportResource加載外部的xml配置文件。

(常用于導(dǎo)入舊的Spring的xml配置文件求橄。)

4今野、加載多個(gè)外部的配置文件

@PropertySource(value = “ ”)可以加載指定的某個(gè)配置文件。

5罐农、配置文件中的隨機(jī)數(shù)變量
  • ${random.value}

  • ${random.int} 条霜、{random.int(10)}、{random.int[10,99]}

  • ${random.long}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末涵亏,一起剝皮案震驚了整個(gè)濱河市宰睡,隨后出現(xiàn)的幾起案子蒲凶,更是在濱河造成了極大的恐慌,老刑警劉巖拆内,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旋圆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡麸恍,警方通過查閱死者的電腦和手機(jī)灵巧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抹沪,“玉大人刻肄,你說我怎么就攤上這事〔晒唬” “怎么了肄方?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蹬癌。 經(jīng)常有香客問我,道長(zhǎng)虹茶,這世上最難降的妖魔是什么逝薪? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮蝴罪,結(jié)果婚禮上董济,老公的妹妹穿的比我還像新娘。我一直安慰自己要门,他們只是感情好虏肾,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著欢搜,像睡著了一般封豪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上炒瘟,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天吹埠,我揣著相機(jī)與錄音,去河邊找鬼疮装。 笑死缘琅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的廓推。 我是一名探鬼主播刷袍,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼樊展!你這毒婦竟也來了呻纹?” 一聲冷哼從身側(cè)響起堆生,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎居暖,沒想到半個(gè)月后顽频,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡太闺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年糯景,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片省骂。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蟀淮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出钞澳,到底是詐尸還是另有隱情怠惶,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布轧粟,位于F島的核電站策治,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏兰吟。R本人自食惡果不足惜通惫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望混蔼。 院中可真熱鬧履腋,春花似錦、人聲如沸惭嚣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晚吞。三九已至延旧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間载矿,已是汗流浹背垄潮。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留闷盔,地道東北人弯洗。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像逢勾,于是被迫代替她去往敵國(guó)和親牡整。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容