1、POM文件
此為Spring Boot的核心勾缭,其所包含的主要內(nèi)容:
-
父項(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>
-
本項(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>
-
依賴引入
用于自動(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)
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。
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)用的配置類事扭。
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}