1. Spring
Spring 特性:IOC、AOP、DI,
Spring:解決對象耦合的問題,在 applicationContext.xml 中申明 bean,Spring在啟動時會解析xml文件進行裝載,當需要用對象時直接從容器中拿取bean。
Spring萬能膠:方便集成各種插件中間件。
Spring本身的這個組件是輕量級,但是配置是重量級。因為所有組件的描述、依賴都需要添加對應的xml配置。
用SpringMVC去構建一個web項目的流程:
→ 創建一個項目結構(maven/ gradle)
→ pom.xml中 添加 spring依賴,spring mvc、servlet api 等等的依賴?
→ 配置WEB-INF/web.xml, 配置 DispatcherServlet (spring mvc是在 jsp servlet 之上做的封裝,所以需要配置dispatcherservlet 去攔截spring的請求)?
→?啟動一個spring mvc的配置,Dispatcher-serclet.xml?
→?創建一個Controller 發布一個 http 請求?
→發布到 jsp/servelt 容器
可以看出,除了?創建一個Controller 發布一個 http 請求,其它步驟都是通用模板
2. SpringBoot
SpringBoot 產生的原因:
① Spring配置的重量級。
② 對于項目構建過程中spring需要添加太多通用性模板性的配置。
③ 微服務萌芽階段,正好也需要這樣一個輕量級的服務化架構。
到底什么是 SpringBoot?——Applications that you can just run
(可以認為 SpringBoot 是 SpringFramework 的一個腳手架,可以使用SpringBoot 快速構建一個基于 SpringFramework 的應用 )
約定大于配置,使用 SpringBoot 只需關注?→?創建一個Controller 發布一個 http 請求 步驟,其它步驟 SpringBoot 已按照默認約定自動完成。
- 只要依賴 Spring-boot-starter-web 的 jar 包,就會自動內置一個 tomcat容器;(默認支持四種web容器:tomcat、jetty、undertow、reactor)
- 項目結構
- 默認提供了配置文件 application.properties. (項目中 ${key} 的引用會默認從application.properties中找key對應的value)
- starter啟動依賴-如果是一個webstarter,默認認為你是去構建一個spring mvc的應用。
SpringBoot的特性
- EnableAutoConfiguration 自動裝配
- Starter 啟動依賴 依賴于自動裝配的技術
- Actuator 監控 提供了一些endpoint,可以基于http、jmx形式去訪問health、mrtrics信息...
- SpringBoot CLI (命令行操作的功能,可以在客戶端基于groovy腳本快速構建springboot應用)
(這些特性并非springboot創造的,spring也支持特性,不過SpringBoot在Spring基礎上進一步做了封裝)
3. Spring 注解驅動的發展過程
SpringBoot的快速發展某種程度上依賴于Spring的注解驅動。
- spring 1.x :IOC的功能
- spring 2.x: 引入了一些注解@Required/ @Repository/ @Aspect
????????????????spring 2.5:@Controller、@Seivice、@Component、@RequestMapping
- spring 3.x:里程碑版本,
- ?@Configuration 取代 xml 文件,去 xml 化。核心目的:把bean對象更加便地加載到springIOC容器中
- @ComponentScan:掃描@Service、@Repository、@Controller
- @Import
- @Enable模塊驅動:自動把模塊相關組件的bean自動裝配到IOC容器中。(如果沒有這種方式,需要用@bean去裝配,很難裝配完全)(Enable可以自定義)