spring Boot是spring提供的一個子項目,用于快速構建spring應用程序
傳統方式:
在眾多子項目中,spring framework項目為核心子項目,提供了核心的功能,其他的子項目都需要依賴于spring framework,在我們實際開發中,我們可以根據不同的業務需求來選擇不同的子項目,通過spring framework子項目把他們整合起來,從而構建一個spring應用程序。
隨著我們的業務需求越來越復雜,功能越來越強大,構建spring程序就會越來越麻煩,因此spring官方給我們提供了spring boot專門應用于spring項目的構建,
傳統方式構建spring應用程序問題
-
導入依賴繁瑣
例如,我們在編寫spring程序時,需要導入相關依賴,且是手動導入,而且這些依賴的jar包可能會造成沖突,jar包沖突的問題也需要去手動解決。非常麻煩。
-
項目配置繁瑣
還需要些很多的配置文件,例如web.xml
,springMVC.xml
,applicationContext.xml
等等
而applicationContext.xml
是spring項目中的核心配置文件,需要在其中聲明配置大量的Bean對象,比如數據庫連接池(DataSource
),SQLSessionFactory
,transactionManager
,mapperScannerConfigue
(掃描映射文件配置)等等不止,這還只是整合mybatis需要的聲明配置,隨著項目功能越來越強大,需要配置的bean對象也越來越多,越來越繁瑣。
springBoot特性
-
起步依賴(解決導入依賴繁瑣的問題)
本質上就是一個Maven坐標,整合了完成一個功能需要的所有坐標。
例如,我們要開發一個web應用,需要引入大量依賴,例如spring-core,spring-web,spring-context,spring-aop等等,在傳統方式構建時,需要手動導入,非常繁瑣。
而springboot提供了一個起步依賴,在spring-boot-starter-web
這個坐標,它將完成web開發需要的所有的坐標全部整合起來放在spring-boot-starter-web
這個坐標里,接下來我們在實際開發中,在需要使用web開發時就不需要導入以前如此多的依賴了,只需要引入springboot提供的起步依賴的坐標即可。這里主要借助了Maven傳遞依賴的特性。
-
自動配置(解決配置繁瑣的問題)
遵循約定大于配置的原則,在boot程序啟動后,一些bean對象會自動注入到IOC容器中,不需要手動聲明,簡化開發。
在傳統項目創建中,spring整合MyBatis除了要導入大量依賴,還要在聲明配置Bean對象(SQLSessionFactoryBean、MapperScannerCofigurer)。
而在springboot項目中,只需要引入MyBatis的起步依賴,在其內部已經自動聲明需要的Bean對象,不需要在配置文件中手動的聲明了。
起步依賴+自動配置 = 快速構建spring應用程序
-
其它特性
-
內嵌的Tomcat、Jetty(無需部署WAR文件)
以前開發的web應用程序需要打成war包,再去部署到我們安轉的Tomcat,Jetty這樣的服務器軟件上才能被瀏覽器訪問。而springboot提供了內嵌的Tomcat,即使用springboot構建的應用程序,啟動時內部的Tomcat會跟著啟動,并且將當前項目里的資源自動部署好。
-
外部化配置
傳統項目中的配置文件都在工程里,當前工程開發完畢后,打成jar包部署,但是如果一些配置發生了變化,需要在當前工程的配置文件里修改,修改完畢后重新打包并部署。比較繁瑣
springboot提供了外部化的配置,將所有的配置文件都放在了外部的MATA-INF/spring.factories中,如果項目部署完畢之后,想要修改配置,只需要去修改項目外邊的配置文件即可,修改完畢后不需要重新編譯打包部署,可以直接重啟即可。
-
不需要XML配置(使用properties/yml配置文件)
傳統項目中的XML配置文件寫起來十分繁瑣復雜,
在springboot項目中采用properties配置文件(鍵值對形式)或者yaml/yml配置文件()來編寫配置文件。十分簡便。
-
我們可以嘗試創建一個springboot項目
springBoot入門
需求:使用springboot開發一個web應用,瀏覽器發起請求/hello后,給瀏覽器返回字符串“hello world”
實現過程:
-
創建Maven工程
-
導入spring-boot-starter-web起步依賴
?<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
-
編寫Controller
?package com.lyc.firstdemo.controller;?import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;?@RestControllerpublic class IndexController {@RequestMapping("/hello")public String index(){return "hello world";}}
-
提供啟動類
測試:
測試成功,我們發現直接創建springboot項目的話,大多數需要的操作系統中已經自己完成了,,我們只需要創建Controller來控制網頁,以及導入web的起步依賴。其他的操作已經在底層自動完成了。由此看來,springboot項目確實十分便捷。
注意事項:在springboot項目中打包方式不需要使用war包,因為springboot項目中內嵌了Tomcat,打成jar包就行。
我們已經創建了一個springboot項目并成功測試,并發現springboot項目與普通的Maven項目好像區別不是很多,讓我們來嘗試利用Maven項目來達到springboot項目中的效果。
手動創建springboot項目
-
創建Maven工程
-
引入父依賴以及spring-boot-starter-web起步依賴
?<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.4.5</version></parent><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
-
提供啟動類
?package com.lyc;?import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.ConfigurableApplicationContext;?@SpringBootApplication //注解表示為springboot項目的啟動類public class SpringBootCreateManualApplication {public static void main(String[] args) {SpringApplication.run(SpringBootCreateManualApplication.class, args);//調用run方法啟動項目}?}
-
提供controller類
?package com.lyc.controller;?import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;?@RestControllerpublic class IndexController {@RequestMapping("/hello")public String index(){return "hello world----------------niuhbi-----------";}}
-
在瀏覽器中測試:
測試成功。
希望讓大家對springboot項目有個大概的了解。謝謝大家!