簡單的瞭解下Springboot

約定大於配置,就是說系統,類庫,框架應該假定合理的默認值,而非要求提供不必要的配置。在使用spring和springmvc的時候,會有好多東西需要配置,這樣工作量增加,並且跨平臺部署的時候容易出現問題。由於這些問題,Spring boot應運而生。

SpringBoot最大的特性就是可以把應用打包成一個jar包或war包,直接啟動,不需要另外配置一個 Web Server。 另外,SpringBoot 喜歡把配置都寫到代碼裡,有時候會帶來混亂,一些本可以用xml來完成的配置,可能會變得難讀和凌亂。

他的核心功能:

1、獨立的運行Spring項目。Spring Boot可以以jar包的形式來運行,運行一個Spring Boot項目我們只需要通過java -jar xx.jar類運行。非常方便。

2、內嵌Servlet容器 ,Spring Boot可以內嵌Tomcat,這樣我們無需以war包的形式部署項目。

3、提供starter簡化maven 配置,使用Spring或者SpringMVC我們需要大量的配置依賴,而這些依賴有很多都是固定的,因此他能簡化配置:

4、 自動配置Spring;

5、準生產的應用監控;

6、無代碼生成和xml配置。

7、極大的提高了開發和部署效率。

接下里看下:

簡單的瞭解下Springboot


就是這個DemoSpringBootApplication.java 類,這是整個項目的入口類,這個類有個@SpringBootApplication 註解,這是整個核心註解,它的目的就是開啟Spring Boot的自動配置。在類上添加一個 @RestController 註解,使之變為一個controller,然後提供一個地址轉換方法,如下:

簡單的瞭解下Springboot


然後點項目啟動按鈕。大家會想到為什麼項目會運行起來,分析下

入口類和@SpringBootApplication註解

我們新建一個Project系統都會幫我們創建一個名為artifactId+Application的入口類,這個類中有一個main方法,這個main方法就是一個標準的Java應用程序的入口方法。這裡的@SpringBootApplication則是一個組合註解,源碼:

簡單的瞭解下Springboot


我們可以看到它組合了@SpringBootConfiguration、@EnableAutoConfiguration以及@ComponentScan,我們在開發的過程中如果不使用@SpringBootApplication,則可以組合使用這三個註解。這三個註解中,@SpringBootConfiguration實際上就是我們前面幾篇博客提到的@Configuration註解,表明這個類是一個配置類,@EnableAutoConfiguration則表示讓Spring Boot根據類路徑中的jar包依賴為當前項目進行自動配置,最後一個@ComponentScan的作用我也不贅述了,唯一要注意的是如果我們使用了@SpringBootApplication註解的話,系統會去入口類的同級包以及下級包中去掃描實體類,因此我們建議入口類的位置在groupId+arctifactID組合的包名下。

關閉特定的自動配置

在上面一小節中我們看到@ComponentScan註解是有一個過濾器的,如果我們只想要@SpringBootApplication去掃描特定的類而不是全部類,那麼就可以關閉自動配置,如下:

簡單的瞭解下Springboot


SpringBoot的配置文件

Spring Boot使用一個全局的配置文件application.properties或者application.yml,配置文件放在src/main/resources目錄下。properties是我們常見的一種配置文件,Spring Boot不僅支持properties這種類型的配置文件,也支持yaml語言的配置文件,這裡以properties類型的配置文件為例來看幾個案例。

a、修改Tomcat默認端口和默認訪問路徑

如下

server.context-path=/helloboot

server.port=8081

只需要在properties文件中添加。

常規屬性配置

使用Spring容器框架下注入properties文件裡的值是很繁瑣的,這裡就會變得異常簡單。

我們只需要在application.properties中定義屬性,然後在代碼中直接使用@Value注入即可。

如下

book.author=羅貫中

book.name=三國演義

book.pinyin=sanguoyanyi

在這裡設置了中文,因為中文不做特殊處理會亂碼,處理方式為在priperties文件中添加:

server.tomcat.uri-encoding=UTF-8

spring.http.encoding.charset=UTF-8

spring.http.encoding.enabled=true

spring.http.encoding.force=true

spring.messages.encoding=UTF-8 然後在變量中通過@Value直接注入就行了,如下:

@Value(value = "${book.author}")

private String bookAuthor;

@Value("${book.name}")

private String bookName;

@Value("${book.pinyin}")

private String bookPinYin;

修改index方法,使之返回這些值:

類型安全配置

剛剛說的這種方式我們在實際項目中使用的時候工作量略大,因為每個項目要注入的變量

的值太多了,這種時候我們可以使用基於類型安全的配置方式,就是將properties屬性和

一個Bean關聯在一起,這樣使用起來會更加方便。我麼來看看這種方式怎麼實現。

1、在.resouses 文件夾中 創建book.properties文件,寫好屬性名和屬性值

2、創建book.bean 並注入properties文件。

簡單的瞭解下Springboot


prefix是指前綴,location指定要注入文件的位置。

在Controller中添加如下代碼注入Bean:

@Autowiredprivate BookBean bookBean;

日誌配置

默認情況下Spring Boot使用Logback作為日誌框架,也就是我們前面幾篇博客中用到的打

印日誌方式,當然如果有需要我們可以手動配置日誌級別以及日誌輸出位置,相比於我們

在Spring容器中寫的日誌輸出代碼,這裡的配置簡直就是小兒科了,只需要在

application.properties中添加如下代碼:

logging.file=/home/sang/workspace/log.log 日誌輸出位置

logging.level.org.springframework.web=debug 日誌級別

Profile 配置問題

在Spring Boot 中系統提供了更為簡潔的方式。全局Profile配置我們使用application-{profile}.properties來定義,然後在application.properties中通過spring.profiles.active來指定使用哪個Profile。OK,那麼接下來我們來看一個簡單的案例。

1.在src/main/resources文件夾下定義不同環境下的Profile配置文件,文件名分別為application-prod.properties和application-dev.properties,這兩個前者表示生產環境下的配置,後者表示開發環境下的配置,如下:

簡單的瞭解下Springboot


application-prod.properties:

server.port=8081
1

application-dev.properties:

server.port=8080
1

然後在application.properties中進行簡單配置,如下:

spring.profiles.active=dev 

如果想換為生產環境,只需要把spring.profiles.active=dev改為spring.profiles.active=prod即可,當然訪問端口這是也變為8081了。


分享到:


相關文章: