Spring Boot學習筆記1:Spring和Spring MVC

《JavaEE開發(fā)的顛覆者:Spring Boot實戰(zhàn)》 2016年版讀書筆記

第一章 Spring概述

1.Spring的配置發(fā)展:

  • xml配置
  • 注解配置帕识,基本配置用xml,業(yè)務配置用注解
  • Java配置沙咏,Spring4.x推薦使用币旧,@Configuration注解生命配置類践险,@ComponentScan自動掃描使用注解聲明的類并將其注冊為bean

2.推薦安裝SpringIDE插件進行基于Spring的開發(fā)。

3.依賴注入DI指的是由容器負責創(chuàng)建對象和維護對象之間的依賴關系吹菱,控制反轉IOC是通過依賴注入實現(xiàn)的巍虫。

4.聲明bean的注解:

  • @Component:沒有明確的角色
  • @Service:業(yè)務邏輯層使用
  • @Repository:數(shù)據(jù)訪問層使用
  • @Controller:展現(xiàn)層使用

5.注入bean的注解:

  • @Autowired:Spring提供
  • @Inject:JSR-330提供
  • @Resource:JSR-250提供
    可以注解在屬性或者set方法上,推薦注解在屬性上鳍刷。

6.java配置是Spring4.x推薦的配置方式占遥,通過@Configuration(聲明為配置類)和@Bean(注解在方法上,聲明返回的是一個bean)實現(xiàn)倾剿。推薦的配置方式:全局配置使用java配置筷频,業(yè)務配置使用注解配置蚌成。

7.AOP面向切面編程,支持AspectJ注解凛捏,常用的注解有:

  • @Aspect:定義切面
  • @After担忧、@Before、@Around定義建言advice坯癣,可以直接將攔截規(guī)則(切點)作為參數(shù)
  • @PointCut專門定義攔截規(guī)則(切點)

第二章 Spring常用配置

1.@Scope注解定義bean的作用域:

  • Singleton:單例模式瓶盛,默認配置
  • Prototype:每次調用新建bean實例
  • Request:web項目中每一個http request新建一個bean
  • Session:web項目中沒一個http session新建一個bean
  • GlobalSession:僅在portal應用中有用,每個globl http session新建一個bean

2.使用@Value注入屬性的不同值示罗,支持EL表達式

  • @Value("Gunner"):注入普通值
  • @Value("#{systemProperties['os.name']}"):注入系統(tǒng)變量
  • @Value("#{T(java.lang.Math).random()*100.0}"):注入表達式值
  • @Value("#{demoService.another}"):注入其他bean的屬性
  • @Value("classpath:com/conanswp/config/config.txt"):注入文件資源,注解于Resource屬性上
  • @Value("http://www.gunner.com"):注解網(wǎng)址資源惩猫,注解于Resource屬性上
  • @Value("${book.name}"):注解配置文件,需要使用@PropertySource在該類上指定文件地址蚜点,然后使用@Bean注解得到一個PropertySourcesPlaceholderConfigurer的bean

3.bean的創(chuàng)建和銷毀前后可以執(zhí)行一定的操作轧房,使用注解如下:

  • Java配置方式:使用@Bean的initMethod和destroyMethod
  • 注解方式:使用JSR-250的@PostConstruct和@PreDestroy

4.profile為在不同環(huán)境下使用不同的配置,方法如下:

  • 設定Environment的ActiveProfiles來指定context使用的配置環(huán)境绍绘,可以使用@Profile注解類或者方法奶镶,達到不同情況下選擇實例化不同的Bean
  • 設定jvm的spring.profiles.active參數(shù)類設置配置環(huán)境
  • web項目設置在Servlet的context參數(shù)中

5.Spring事件用于支持bean之間的消息通信

  • 自定義事件,繼承ApplicationEvent
  • 定義事件監(jiān)聽器,實現(xiàn)ApplicationListener
  • 使用容器ApplicatioonContext發(fā)布事件

第三章 Spring高級話題

1.Spring Aware可以讓bean獲取Spring容器的服務陪拘。

  • 實現(xiàn)BeanNameAware:可以獲取bean名稱
  • 實現(xiàn)ResourceLoaderAware:獲取資源加載器

2.Spring通過TaskExecutor實現(xiàn)多線程和并發(fā)編程厂镇。使用ThreadPoolTaskExecutor實現(xiàn)基于線程池的TaskEcecutor。使用@EnableAsync開啟對異步任務的支持左刽,使用@Async注解聲明方法是一個異步任務捺信。

3.@EnableScheduling開啟計劃任務支持(在config類上使用),然后在方法上通過@Scheduled聲明計劃任務方法欠痴。@Scheduled支持cron迄靠,fixDelay,fixRate等斋否。

4.@Conditional根據(jù)滿足特定條件創(chuàng)建特定的bean梨水。

5.支持新增注解組合已有注解的功能。

第四章 Spring MVC基礎

1.通過實現(xiàn)WebApplicationInitializer接口可以不使用web.xml配置文件茵臭。

2.Spring MVC常用注解

  • @Controller:聲明為控制器bean疫诽,自動被DispatcherServlet掃描,并將web請求映射到注解了@RequestMapping的方法上旦委。
  • @RequestMapping:映射web請求(訪問路徑和參數(shù))奇徒,處理類和方法∮酰可以注解在類和方法上摩钙,注解在方法上時路徑會繼承注解在類上的路徑。
  • @ResponseBody:支持將返回值放到response體內而不是返回一個頁面查辩。
  • @RequestBody:允許request參數(shù)在request體內而不是鏈接在地址后面胖笛。
  • @PathVariable:用來接收路徑參數(shù)网持。
  • @RestController:組合注解了@Controller和@ResponseBody,用于定義與頁面交互數(shù)據(jù)的控制器长踊。

3.Spring MVC通過繼承WebMvcConfigurerAdapter類并在配置類使用@EnableWebMvc來定制配置功舀,如添加靜態(tài)文件目錄等。

  • addResourceHandlers:用于添加靜態(tài)資源
  • 實現(xiàn)HanlderInterceptor或者繼承HandlerInterceptorAdapter類實現(xiàn)自定義攔截器身弊。然后使用addInterceptors注冊自定義的攔截器辟汰。
  • @ControllerAdvice處理控制器全局配置,如@ExceptionHandler處理全局異常阱佛,@InitBinder設置WebDataBinder自動綁定前臺請求參數(shù)到后臺Model中帖汞,@ModelAttribute讓全局的@RequestMapping能獲得此處設置的鍵值對。

4.高級配置

  • MultipartReaolver處理上傳文件
  • HttpMessageConcerter處理請求和響應的數(shù)據(jù)轉換格式
  • 服務器推送技術:SSE和Servlet3.0+異步方法處理凑术。此外翩蘸,瀏覽器和服務器之間可以使用WebSocket進行雙向通信
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市麦萤,隨后出現(xiàn)的幾起案子鹿鳖,更是在濱河造成了極大的恐慌扁眯,老刑警劉巖壮莹,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異姻檀,居然都是意外死亡命满,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門绣版,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胶台,“玉大人,你說我怎么就攤上這事杂抽≌┗#” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵缩麸,是天一觀的道長铸磅。 經(jīng)常有香客問我,道長杭朱,這世上最難降的妖魔是什么阅仔? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮弧械,結果婚禮上八酒,老公的妹妹穿的比我還像新娘。我一直安慰自己刃唐,他們只是感情好羞迷,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布界轩。 她就那樣靜靜地躺著,像睡著了一般衔瓮。 火紅的嫁衣襯著肌膚如雪耸棒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天报辱,我揣著相機與錄音与殃,去河邊找鬼。 笑死碍现,一個胖子當著我的面吹牛幅疼,可吹牛的內容都是我干的。 我是一名探鬼主播昼接,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼爽篷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了慢睡?” 一聲冷哼從身側響起逐工,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎漂辐,沒想到半個月后泪喊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡髓涯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年袒啼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纬纪。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡蚓再,死狀恐怖,靈堂內的尸體忽然破棺而出包各,到底是詐尸還是另有隱情摘仅,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布问畅,位于F島的核電站娃属,受9級特大地震影響,放射性物質發(fā)生泄漏按声。R本人自食惡果不足惜膳犹,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望签则。 院中可真熱鬧须床,春花似錦、人聲如沸渐裂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至族阅,卻和暖如春篓跛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背坦刀。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工愧沟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鲤遥。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓沐寺,卻偏偏與公主長得像,于是被迫代替她去往敵國和親盖奈。 傳聞我的和親對象是個殘疾皇子混坞,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)钢坦,斷路器究孕,智...
    卡卡羅2017閱讀 134,637評論 18 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,778評論 6 342
  • 文章作者:Tyan博客:noahsnail.com 3.4 Dependencies A typical ente...
    SnailTyan閱讀 4,135評論 2 7
  • http://liuxing.info/2017/06/30/Spring%20AMQP%E4%B8%AD%E6%...
    sherlock_6981閱讀 15,894評論 2 11
  • 十六期閉關前先明哥哥的密語:“拍打是靈魂的藝術”! 你們現(xiàn)在學會這個(身心振動)方法爹凹,只要把心平靜下來厨诸,基本上拍個...
    昕暚閱讀 226評論 1 1