http://my.oschina.net/u/1027043/blog/406558 css
上篇散仙寫了一個很簡單的入門級的Spring Boot的例子,沒啥技術含量,不過,其實學任何東西只要找到第一個突破口,接下來的事情就好辦了,人最怕什麼? 我想莫過於幹一件事情,沒有下手的地方了,而當你一旦找到了這感受,就能夠很喜悅的順藤摸瓜般的探索你強烈想探索求知的某種事物了,這種冥冥之中玄而又玄的感受是什麼?回想一下:
(1) 當你把第一個某種編程語言的Hello World的例子,成功的運行在一個IDE中
(2) 當你第一次從老家出發到達了某個你從未涉足過的地方
(3) 當你成功的完成了第一次網購
一切的不相關的事物之間的,其實都有相似的學習歷程,正是所謂的舉一反三,萬法歸宗!
關於Spring Boot這塊,其實裏面涉及的內容很是多也很是靈活,散仙的項目中用到的模塊也只是冰山一角,不可能徹底覆蓋全部有關的模塊,徹底是爲了項目而用技術,不是爲了技術而誕生了這個項目,因此此次記錄的心得,徹底是項目有關的,而不是Spring Boot一個學習教程,這一點,但願各位看官明白,若是想專攻學習Spring Boot,推薦點擊官網更詳細的教程
一個項目是由多種不一樣層面的技術組成的,因此散仙不會只寫有關Spring Boot方面的,雖然Spring Boot是主線。大多數狀況下,都會集成多種不一樣的技術,只有各自發揮本身擅長的優點,才能組合出最優的架構。
好了,多說了點廢話,下面看下本篇記錄Spring Boot的幾個知識點:
(一)一個Maven+Spring Boot項目基本的包結構形式
(二)一個簡單的在Spring Boot項目集成安全控制
(二)如何在Spring Boot中記錄log日誌
(四)Spring Boot中幾個經常使用註解介紹
ok下面開始正題:
(一)先看下,官網給出的一個簡單的包結構組成:
html
而後,看下散仙實際工做中的項目結構:
須要注意的地方以下:
1,在src/main/java包下的第一層結構中,是必須放一個含有main方法的主啓動的類,並且只能有一個main方法,若是再出現其餘的main方法,在使用maven編譯打包時,會報編譯錯誤,固然在src/test/java包下,能夠出現多個,但建議最好使用Junit進行單元測試.
這個main方法啓動,就會啓動內嵌的tomcat或jetty容器,而後加載全部須要加載的或掃描的類或資源文件。上篇博客中,散仙爲了測試方便,是直接在當前的Conroller中,啓動了一個測試服務,這樣作適合單獨調試,若是是生產環境下的啓動方法,則是散仙前面所講的,在java包的根目錄下創建一個main方法類,負責啓動全部的資源。
在本例中,散仙的main代碼以下:
java
2,在src/main/resource目錄下面,是放置一些配置文件,或模板支持的文件,如JSP,Velocity,Freemaker等,這裏面比較經常使用或重要的一個文件,就是Spring Boot的集中式配置文件application.properties這個文件了,這裏面給其餘大部分的組件,提供了一個可集中管理和配置的中心,包括安全控制,redis,solr,mangodb的鏈接信息,以及數據庫鏈接池,容器端口號,jmx,java mail,動態模板等。此外這個目錄下默認是能夠訪問靜態資源的,好比咱們的css,js,或者第三方的一些引用文件等。
(二)關於在Spring Boot的配置簡單的安全訪問控制,這一點很是容器,咱們只須要作以下二步,便可。
1,在pom文件中,引入spring-boot-starter-security的maven依賴。
web
2,在application.properties中,配置訪問的用戶名和密碼
redis
再次,訪問連接時,會出現如下,攔截頁面,就表明配置成功:
固然這只是,一個初級的配置,更復雜的配置,能夠分不用角色,在控制範圍上,可以攔截到方法級別的權限控制。
(三)日誌的重要性,不言而喻,Spring Boot支持大部分的log配置,其中包括:
(1)java util logging
(2)log4j
(3)log4j2
(4)logbak
默認的狀況下spring boot會選擇logback做爲日誌記錄的載體,固然要想它正常的工做,須要依賴 Commons Logging, Java Util Logging, Log4J 或 SLF4J,相信大部分同窗都是選擇使用log4j.properties做爲咱們的日誌配置和管理,可是散仙在Spring Boot中一直沒有測試集成成功,因此就放棄使用log4j.properties做爲日誌載體,而是選擇了Spring Boot推薦的logbak做爲日誌的配置文件,用過以後感受也不錯。
使用步驟:
1,將logbak.xml拷貝至resource目錄下的根目錄,而後在logbak.xml中,配置相關的log生成規則,log級別,以及日誌路徑,log的字符編碼集,這個很是重要,由於剛開始用這個log記錄程序運行的信息時,發現它不支持中文log,後來經查名,須要配置相關的log編碼才能夠正確記錄對應的信息。一個通用的配置以下:
spring
2,在application.properties中,指定log文件的加載路徑,已經配置通用的log日誌級別:
數據庫
(四)介紹下Spring Boot中幾個經常使用的註解,其中大部分都是來自Spring MVC的註解,這些註解使用的頻率通常都在90%之上。
(1)@RestController和@Controller指定一個類,做爲控制器的註解
(2)@RequestMapping方法級別的映射註解,這一個用過Spring MVC的小夥伴相信都很熟悉
(3)@EnableAutoConfiguration和@SpringBootApplication是類級別的註解,根據maven依賴的jar來自動猜想完成正確的spring的對應配置,只要引入了spring-boot-starter-web的依賴,默認會自動配置Spring MVC和tomcat容器
(4)@Configuration類級別的註解,通常這個註解,咱們用來標識main方法所在的類
(5)@ComponentScan類級別的註解,自動掃描加載全部的Spring組件包括Bean注入,通常用在main方法所在的類上
(6)@ImportResource類級別註解,當咱們必須使用一個xml的配置時,使用@ImportResource和@Configuration來標識這個文件資源的類。
(7)@Autowired註解,通常結合@ComponentScan註解,來自動注入一個Service或Dao級別的Bean
(8)@Component類級別註解,用來標識一個組件,好比我自定了一個filter,則須要此註解標識以後,Spring Boot纔會正確識別。
ok,本篇的講解,就到此結束,這些都是項目工程的基礎知識,瞭解這些,有助於咱們快速的上手一個Spring Boot應用。
下篇博客的內容會寫:
(1)如何在Spring Boot項目中集成Spring Loaded框架,來完成模塊熱加載和代碼動態編譯,有了這個東西,咱們開發的效率會更加高效,大部分狀況下咱們改了一個類或方法的代碼以後,都不須要重啓應用,由於Spring Loaded會定時從新編譯並加載代碼。
(2)如何在Spring Boot項目中集成Velocity,Spring Boot支持多種模板引擎,包括
1,FreeMarker
2,Groovy
3,Thymeleaf
4,Velocity
5,JSP (Spring Boot官方不推薦)
咱們能夠根據熟悉程度來選擇本身喜歡的引擎。 編程