敏捷開發必備框架之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