1. 程式人生 > >敏捷開發必備框架之SpringBoot

敏捷開發必備框架之SpringBoot

一、SpringBoot簡介

SpringBoot是為了簡化Spring應用的建立、執行、除錯、部署等而出現的,使用它可以做到專注於Spring應用的開發,而無需過多關注XML的配置,簡單來說,springboo提供了一堆依賴打包,並且已經按照習慣解決了依賴問題

SpringBoot預設使用tomcat作為伺服器,使用logback提供日誌記錄

SpringBoot提供了一系列的依賴包,所以需要構建工具的支援,maven或者gradle

二、springboot啟動器

spring-boot-starter(這是springboot的可信啟動器,包含了自動配置,日誌和YAML)

一個簡單的sprngboot示例:

1、pom.xml配置

springboot父工程依賴

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifcatId>

<version>1.3.1.RELEASE</version>

<relativePath/>

</parent>

2、springboot web啟動器

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

二、SpringBoot的註解

@SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration註解

@ComponentScan:使得SpringBoot掃描到Configuration類並將其加入到程式上下文

@Configuration:等同於spring的xml配置檔案,使得java程式碼可以檢查型別安全

@EnableAutoConfiguration:自動配置

@ComponentScan:元件掃描,可以自動發現和裝配一些Bean

@Component:可以配合CommandLineRunner使用,在程式啟動後執行一些基礎任務

@RestController註解是@Controller和@ResponseBody的合集,表示這是個控制器bean,並且是將函式的返回值直 接填入HTTP響應體中,是REST風格的控制器。

@Autowired自動匯入。

@PathVariable獲取引數

@JsonBackReference解決巢狀外鏈問題。

@RepositoryRestResourcepublic配合spring-boot-starter-data-rest使用。

@EnableAutoConfiguration:Spring Boot自動配置(auto-configuration):嘗試根據你新增的jar依賴自動配置你的Spring應用。例如,如果你的classpath下存在HSQLDB,並且你沒有手動配置任何資料庫連線beans,那麼我們將自動配置一個記憶體型(in-memory)資料庫”。你可以將@EnableAutoConfiguration或者@SpringBootApplication註解新增到一個@Configuration類上來選擇自動配置。如果發現應用了你不想要的特定自動配置類,你可以使用@EnableAutoConfiguration註解的排除屬性來禁用它們。

@Configuration類上來選擇自動配置。如果發現應用了你不想要的特定自動配置類,你可以使用@EnableAutoConfiguration註解的排除屬性來禁用它們。

這個註釋告訴SpringBoot“猜”你將如何想配置Spring,基於你已經新增jar依賴項。如果spring-boot-starter-web已經新增Tomcat和Spring MVC,這個註釋自動將假設您正在開發一個web應用程式並新增相應的spring設定。

自動配置被設計用來和“Starters”一起更好的工作,但這兩個概念並不直接相關。您可以自由挑選starter依賴項以外的jar包,springboot仍將盡力自動配置您的應用程式。

@Bean:相當於XML中的bean,放在方法的上面,而不是類,意思是產生一個bean,並交給spring管理。

三、SpringBoot的啟動

import    org.springframework.boot.SpringApplication;

import   org.springframework.boot.autoconfigure.SpringBootApplication

@SpringBootAppliaction

public class SpringBootSampleApplication{

public static void mian(String[] args){

SpringApplication.run(SpringBootSampleApplication.class,args);

}

}

四、springboot支援jsp

springboot預設支援freeMarker頁面,jsp技術過於陳舊(效率低下),如果springboot輸出jsp頁面,則需要:

1、配置application.properties

#頁面預設字首目錄(不可改動)

spring.mvc.view.prefix=/WEB-INF/jsp

#響應頁面預設字尾

spring.mvc.view.suffix=.jsp

2、加入依賴

<dependency> 
<groupId>org.apache.tomcat.embed</groupId> 
<artifactId>tomcat-embed-jasper</artifactId> 
<scope>provided</scope> 

</dependency> 

<dependency>
 <groupId>javax.servlet</groupId> 
<artifactId>jstl</artifactId> 

</dependency>

五、springboot支援freemarker

1、配置application.properties

spring.freemarker.allow-request-override=false
spring.freemarker.cache=true
spring.freemarker.check-template-location=true
spring.freemarker.charset=UTF-8
spring.freemarker.content-type=text/html
spring.freemarker.expose-request-attributes=false
spring.freemarker.expose-session-attributes=false

spring.freemarker.expose-spring-macro-helpers=false

2、引入依賴

<!-- 引入freeMarker的依賴包. -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>

</dependency>

六、Springboot/servlet註冊

springboot有兩種方式新增Servlet/Filter/Listener

1、程式碼註冊通過ServletRegistrationBean、FilterRegistrationBean()和ServletListenerRegistrationBean獲得

@Bean

public ServletRegistrationBean servletRegistrationBean(){

return new ServletRegistrationBeab(new MyServlet(),"/xs/*");

}

2、在SpringBootApplication上使用@ServletComponentScan註解後,Servlet、Filter、Listener可以直接通過@WebServlet、@WebFilter、@WebListener註解自動註冊,無需其他程式碼

eg:

@SpringBootApplication

@ServletComponentScan

public class SpringBootApplication{

        public static void main(String[]c args){

        SpringBootApplication.run(SpringBootSampleApplication.calss,args);

        }

}

七、SpringBoot攔截器

1、建立我們自己攔截器類,並且實現HandlerInterceptor介面

2、建立一個Java類繼承WebMvcConfigurerAdapter,並且重寫addInterceptors方法

3、例項化我們自定義的攔截器,然後將物件手動新增到攔截器鏈中(在addInterceptors方法中新增)

八、SpringBoot靜態資源處理

1、springboot的預設資源對映

其中預設配置的 /**對映到/static(或者/public 、/resource、/META-INF/resource)

其中預設配置的/webjars/** 對映到classpath:/META-INF/resources/webjars/

上面的static、public、resources等目錄都在classpath:下面(如:“src/main/resources/static”)

2、自定義資源對映

繼承WebMvcConfigurerAdapter並且重寫方法addResourceHandlers

registry.addResourceHandler("/image/**").addResourceLocations("filter:H:/image")

registry.addResourceHandler("/image1/**").addResourceLocations("classpath:/img1")

3、通過配置檔案對映

使用spring.mvc.static-path-pattern,如修改為/image/**、

使用spring.resources.static-location可以重新定義pattern所指向的路徑,支援classpath和file

注意:spring.mvc.static-path-pattern只可以定義一個,目前不支援多個都好分割的方式

#預設值為  /**

spring.mvc.static-path-pattern=/image/**

#預設值為 classpath:/META-INF/resources/  , classpath:/resources/ , classpath:/static/ , classpath:/public/

spring.resources.stat-locations=classpath:/image/

springboot 啟動載入資料,在專案啟動的時候載入一些資料或者做一些事情的需求,springBoot提供的方法是通過實現介面CommandLineRunner來實現

九、SpringBoot   JDBC

1、屬性配置檔案(application.properties)

spring.datasource.url=mysql://localhost:3306/consult

spring.datasource.username=myConsult

spring.datasource.password=123456

spring.datasource.driver-class-name=org.git.m.m.mysql.Driver

2、pom.xml配置maven依賴

<!--MySql依賴-->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

</dependency>

<!--springboot JDBC-->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifcatId>spring-boot-starter-jdbc</artifcatId>

</dependency>

十、SpringBoot整合MyBatis

1、pom.xml配置maven依賴

<dependency>

<groupId>org.mybatis.spring.boot</groupId>

<artifcatId>mybatis-spring-boot-starter</artifcatId>

<version>1.0.0</vsersion>

</dependency>

2、一定要在啟動的地方加上@MapperScan(“com.zhongmei.tang.dao”)

3、配置檔案中加上配置

mybatis.typeAliasesPackage=com.zhongmei.tang.bean

mybatis.mapperLOcation-classpath:com/zhongmei/tang/xml/*Mapper