Spring_boot 入門學習00

題外話:

若是說spring boot 的話,就應該先說spring ,畢竟spring算是spring boot 的爸爸(按輩分說)。。。java

spring 做爲一個全局性框架 ,很是優秀。能夠無縫 鏈接其餘的 框架 好比  持久層框架的 hibernate 、mybatis 。web

所謂全局性,應該類比成一個 管家的身份, 它 幫你幹了不少 繁瑣的事情,好比之前,咱們若是想生成一個對象,而且想往裏面設置初始值,spring

好比 web 應用中,典型的mvc結構json

controller 層中 持有 service 的示例,咱們本身的作法就是new service() 賦值給 controller 中的對象。有了spring 把 這個對象 交給spring 來管理,而後咱們只需在這個對象上面寫上註解,就能讓spring幫咱們完成初始化的任務。(ps:多是我尚未多少項目經驗,我感受這個  「屬性注入「  感受做用不是很明顯,等未來若是有新的體驗,或者有什麼應用場景就寫出來吧,暫時的話,就感受幫咱們初始化,並無省多大功夫,或者說,做爲spring的 核心之一 有點誇大???),固然還能從xml文件中進行配置 注入(構造器注入)。數組

不過 因爲spring 比較的繁瑣(比起struts 應該是好的了,畢竟做者就是爲了 「裝逼」  說struts 太笨重,才寫出來的 這個框架。。。真的厲害)。主要仍是 xml配置比較多。所以spring boot 就 來了。mybatis

spring boot

Spring  boot 其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員再也不須要定義樣板化的配置。mvc

                                                                                                                   ------百度百科app

spring boot  倡導:習慣優於配置。 框架

好了,廢話不說了,接下來就先講講入門吧,這篇博文主要是收集,記錄,一些 註解的意義和使用的地方,由於我看了spring boot 2天了,都是看着別人的教程,寫了這個註解,那個註解,關了網頁,就不知道這究竟是TM 什麼鬼,這個註解的做用是什麼,爲何要這麼寫,也是不怎麼明白,所以註解就先放在第一天說,最起碼眼熟了,等後面慢慢學習了,也就知道是什麼回事了。學習

spirng boot 註解

@ComponentScan

 component 是 組件, scan 是掃描 。 意思就是 掃描組件,這個註解主要是用來 進行掃描一些  帶有註解的類,讓 框架 有一個全局性的把握。(你要不讓他掃描,有什麼類是幹什麼的 ,它也是不可能知道的。)

舉個栗子:

ps:純粹是爲了做用,沒必要早已經是否能看懂其餘配置。等下一節應該就能徹底看懂了。

這個是 入口。 上面沒有  @componentScan 註解,

下面就是寫了一個普通方法, requestMapping 總知道是什麼吧???!!!

好了 啓動訪問如下這路徑

 

頁面並不能訪問的到。

下面加上這個註解:

你看,這樣就能訪問的到了。

固然,這個註解還有一個屬性 就是選擇 掃描的範圍 ,若是不寫的話就 默認只掃描本包,若是寫路徑,就掃描路徑下面的包,子包中的全部類。

用法:@ComponentScan(basePackages={"com"}) (basePackages是一個數組形式的。能夠掃描多個包)

這個註釋通常 都用在主入口處吧。。。

 

@EnableAutoConfiguration

@EnableAutoConguration是和自動化配置相關的東西。

Enable auto-configuration of the Spring Application Context, attempting to guess and configure beans that you are likely to need. Auto-configuration classes are usually applied based on your classpath and what beans you have defined.
Auto-configuration tries to be as intelligent as possible and will back-away as you define more of your own configuration. You can always manuallyexclude() anyconfiguration that you never want to apply (use excludeName() if you don'thave access to them). You can also exclude them via thespring.autoconfigure.exclude property. Auto-configuration is always appliedafter user-defined beans have been registered.
The package of the class that is annotated with @EnableAutoConfiguration has specific significance and is often used as a 'default'. For example, it will be usedwhen scanning for@Entity classes. It is generally recommended that you place@EnableAutoConfiguration in a root package so that all sub-packages and classescan be searched.
Auto-configuration classes are regular Spring Configuration beans. They are located using the SpringFactoriesLoader mechanism (keyed against this class).Generally auto-configuration beans are@Conditional beans (mostoften using @ConditionalOnClass and@ConditionalOnMissingBean annotations).

這是官網的英文。

貼點別人的解釋:

首先,顧名思義,@EnableAutoConguration是和自動化配置相關的東西。

官網的第一段話主要是說,Spring應用上下文的自動化配置,嘗試去猜想和配置你須要的bean。這些被自動化配置的類一般在classpath路徑下,或者是你本身定義的bean。

第二段話主要是說,你可使用exclude來排除那些你不想被自動化配置的類。

第三段是講:被@AutoConfiguration註解的類所在的包有着特殊的意義,他們一般被認爲是默認的包,並對其及下屬的包進行掃描。

第四段前半句是說,被自動配置的類一般是在@Configuration裏面配置的類。

大概的意思就是,他捨棄了 xml配置,而是去猜測你如何去配置。

根據應用所聲明的依賴來對 Spring 框架進行自動配置,這就減小了開發人員的工做量。

這個真的是挺厲害的。 

寫在主入口的類上。

@Configuration 

@Configuration可理解爲用spring的時候xml裏面的<beans>標籤。

至於 beans 標籤...再搜吧。

 

@SpringBootApplication 

這個是以上三個的合體。這是通常最開始學習時,懶人配置,直接讓spring boot 自動幫你配置好,咱們直接寫代碼就好,無需去多餘的配置。

寫在主入口的類上。

@RestController

@Controller 

定義這個類是一個 controller層。

在類上面使用。

@ResponseBody

定義這個方法是返回json字符串的。

在方法上使用。

@RestController 其實就是以上 兩者的結合。聲明他是一個控制層,且是返回的都是json的,或者是null的,或者是void方法。

@Autowired

這個是注入的註解,就是spring 幫你把實例對象地址交給變量,完成初始化。

@Value

這個是跟自動注入有點相似,不過注入的是 properties文件中的,支持el表達式形式。

並且這個priperties 文件 必須是 application.properties。

這個不用寫出set方法

@ConfigurationProperties

這個也是自動注入properties ,跟上面的value 註解相似,不過畢竟@value 一個一個注入,要寫不少,很累的。

這個註解能夠將整個properties 封裝到javabean中 。

注意:須要寫出set方法。

@PropertySource

當咱們想使用其餘properties文件做爲 常量,好比jdbc,log4j,畢竟這樣分着更明顯。所以可使用這個註解進行顯示指定某個 properties 

用法:@PropertySource("classpath:xxxxx.properties")

 

暫時使用的只有這些,由於我也是剛開始學習。用到後就慢慢添加。畢竟不懂註解,會很煩。。。

未完待續.....

相關文章
相關標籤/搜索