文章目錄
Spring Boot簡介
- 首先它是一個用來簡化新Spring應用的初始搭建以及開發過程的框架。
- 其好處就是簡單方便以及快速;使用嵌入式的Servlet容器應用無需打成WAR包
- starters自動依賴與版本控制
- 無需配置XML,無代碼生成,開箱即用
基於Idea的Maven構建項目
Spring Boot Helloworld
-
實現的功能:瀏覽器發送hello請求,服務器接收請求並處理,相應Hello World字符串
-
創建一個maven工程
-
導入spring boot相關的依賴
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
-
編寫一個主程序:用於啓動spring boot應用
/** * @SpringBootApplication 來標註一個主程序類,說明這是一個Spring Boot應用 */ @SpringBootApplication public class HelloWorldMainApplication { public static void main(String[] args) { // Spring應用啓動起來 SpringApplication.run(HelloWorldMainApplication.class,args); } }
-
編寫相關的Controller、Service
@Controller // 處理請求 public class HelloController { @ResponseBody // 把hello world寫出去 @RequestMapping("/hello") // 接收來自與瀏覽器的hello請求 public String hello(){ return "Hello World!"; } }
-
運行環境進入localhost:8080/hello
-
部署工作
導入插件
<!‐‐ 這個插件,可以將應用打包成一個可執行的jar包;‐‐> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐maven‐plugin</artifactId> </plugin> </plugins> </build>
然後運行Maven中的package進行打包
項目結構
-
src/main/java 程序開發以及主程序的入口
-
src/main/resources 配置文件
resources的目錄結構:
- static:保存所有的靜態資源; js css images;
- templates:保存所有的模板頁面;(Spring Boot默認jar包使用嵌入式的Tomcat,默認不支持JSP頁面);可以使用模板引擎(freemarker、thymeleaf);
- application.properties:Spring Boot應用的配置文件;可以修改一些默認設置;
-
sec/test/java 測試程序
-
另外對於一個Spring Boot建議的目錄結構爲:
1、Application.java一般放在根目錄下,主要用於做一些框架配置
2、model 主要用於實體與數據訪問層
3、service層主要是業務類代碼
4、controller負責頁面訪問控制
Hello World文件探究
POM文件
1、父項目
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
他的父項目是
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring‐boot‐dependencies</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath>../../spring‐boot‐dependencies</relativePath>
</parent>
它來真正管理Spring Boot應用裏面的所有依賴版本;
Spring Boot的版本仲裁中心。
2、啓動器
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
spring-boot-starter-web:
spring-boot-starter:spring-boot場景啓動器;幫我們導入了web模塊正常運行所依賴的組件;
Spring Boot將所有的功能場景都抽取出來,做成一個個的starters(啓動器),只需要在項目裏面引入這些starter
相關場景的所有依賴都會導入進來。要用什麼功能就導入什麼場景的啓動器
2、主程序類,主入口類
/**
* @SpringBootApplication 來標註一個主程序類,說明這是一個Spring Boot應用
*/
@SpringBootApplication
public class HelloWorldMainApplication {
public static void main(String[] args) {
// Spring應用啓動起來
SpringApplication.run(HelloWorldMainApplication.class,args);
}
}
其中**@SpringBootApplication**:標註在某個類上說明這個類是SpringBoot的主配置類,在SpringBoot就會運行這個類中的main方法來啓動SpringBoot應用。
它其實是一個組合註解:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
其中**@SpringBootConfiguration**:標註在某個類上,表示這是一個SpringBoot的配置類
@Configuration:配置類上來標註這個註解。用來表明是一個配置類。
在SpringBoot中配置類相當於配置文件;配置類也是容器中的一個組件。
@EnableAutoConfiguration:開啓自動配置功能。
@AutoConfigurationPackage
@Import(EnableAutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
@AutoConfigurationPackage:自動配置包。
@Import(AutoConfigurationPackages.Registrar.class):Spring的底層註解,給容器中導入一個組件;導入的組件由AutoConfigurationPackages.Registrar.class;來確定。
負責將主配置類的所在包以及下面所有的自保裏面的所有組件掃描到Spring容器中
Spring Boot在啓動的時候從類路徑下的META-INF/spring.factories中獲取EnableAutoConfiguration指定的值,將這些值作爲自動配置類導入到容器中,自動配置類就生效,幫我們進行自動配置工作;以前我們需要自己配置的東西,自動配置類都幫我們;
J2EE的整體整合解決方案和自動配置都在spring-boot-autoconfigure-1.5.9.RELEASE.jar;