前兩季完成了spring+springMvc+mybatis+Druid+Shiro+Ehcache框架的整合、使用。同時也展開了對項目簡單重構,更多的時候咱們學會了利用框架偷懶。html
固然本着偷懶精神,同時帶着羣友的呼聲,咱們不妨來看看springBoot相關的信息。java
本項目github倉庫:github.com/pc859107393…mysql
本項目國內碼雲倉庫:git.oschina.net/859107393/M…git
本系列爲連載文章。固然若是你沒有spring基礎,建議你先看看個人java手把手教程github
有興趣交流springboot進行快速開發的同窗能夠加一下下面的企鵝羣。web
首先百度一下springboot、springmvc的區別。spring
Spring MVC 是基於 Spring 的一個 渲染web的MVC 框架。sql
Spring Boot 是基於 Spring 的條件註冊的一套快速開發整合包。數據庫
大概意思就是上面這樣描述,對不對呢?其實咱們根據以往的經驗,再去看看springboot的源包也就能夠看到大概了。express
咱們仍是同樣進行gradle引入。
// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot
compile group: 'org.springframework.boot', name: 'spring-boot', version: '1.5.4.RELEASE'複製代碼
在gradle自動引入依賴完成後,咱們能夠看到springboot自動引入了以下資源:
到了這裏咱們就能夠明白上面對springBoot的概述。也就是自動註冊一堆框架提供給咱們使用。
那麼,咱們能不能快速的集成更多的框架呢?
首先我在spring4all社區找到了一款集成了Druid的快速啓動框架:druid-spring-boot。同時,我還看到了泥瓦匠BYSocket寫的springBoot教程。因此,我找到了更爲快捷的辦法。
繼續gradle引入資源:
//druid-spring-boot-starter
compile('com.github.drtrang:druid-spring-boot-starter:1.0.3') {
exclude group: 'com.alibaba'
}複製代碼
在上面的代碼中,exclude group: 'com.alibaba'的意思是排除組織是com.alibaba的包。爲何排除呢?主要是做者用的阿里巴巴的包相對舊一點和他github上面的包不一致。
接着咱們一次把須要的包所有導入,以下:
compile 'com.alibaba:druid:1.1.2'
// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent
compile 'org.springframework.boot:spring-boot-starter-parent:1.5.4.RELEASE'
// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web
compile 'org.springframework.boot:spring-boot-starter-web:1.5.4.RELEASE'
runtime 'mysql:mysql-connector-java:5.1.39'
testCompile 'org.springframework.boot:spring-boot-starter-test:1.5.4.RELEASE'複製代碼
能夠看到咱們再次導入了Druid。同時,咱們導入了:
有了上面的包後,咱們接着是刪掉前面的spring-boot,畢竟springboot太大了。,因此最後咱們gradle目前的引入資源是:
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
// https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter
compile 'org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.0'
compile 'com.squareup.okhttp3:okhttp:3.8.1'
//druid-spring-boot-starter
compile('com.github.drtrang:druid-spring-boot-starter:1.0.3') {
exclude group: 'com.alibaba'
}
compile 'com.alibaba:druid:1.1.2'
// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent
compile 'org.springframework.boot:spring-boot-starter-parent:1.5.4.RELEASE'
// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web
compile 'org.springframework.boot:spring-boot-starter-web:1.5.4.RELEASE'
runtime 'mysql:mysql-connector-java:5.1.39'
testCompile 'org.springframework.boot:spring-boot-starter-test:1.5.4.RELEASE'
}複製代碼
這個時候咱們直接新建一個類,來啓動springboot。
/** * Spring Boot 應用啓動類 * * @author acheng */
@SpringBootApplication
public class Application {
public static void main(String[] args) {
// 程序啓動入口
// 啓動嵌入式的 Tomcat 並初始化 Spring 環境及其各 Spring 組件
SpringApplication.run(Application.class,args);
}
}複製代碼
如無心外,這裏絕對是報錯(提示咱們Druid須要的DataSource建立失敗,而後結束運行)。哈哈哈,你們確定以爲筆者是傻瓜,爲何明明知道有錯還哈哈哈。這裏其實涉及到一個問題,那就是框架整合以及框架須要的配置支持,固然這個在springboot中叫作約定!
咱們看一下導入的Druid-Starter相關的項目介紹!
框架做者明顯告訴咱們須要建立一個application.yml的約定文件來配置Druid相關的參數。
偷懶直接引入做者的文件,再做適當的修改,結果以下:
debug: false
logging:
level:
root: info
org.springframework: info
org.springframework.jdbc: debug
org.mybatis: debug
com.github.trang: debug
spring:
profiles:
# 默認環境爲 default,多數據源演示請改成請參考git上面的demo
active: default
output:
ansi:
enabled: always
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/ccdb?useUnicode=true&characterEncoding=utf8&autoReconnect=true
username: root
password: laopo5201314
druid:
# spring.datasource.druid 前綴的配置將注入到 DruidParentDataSource,做爲公共參數
initial-size: 1
min-idle: 1
max-active: 10
max-wait: 30000
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 1800000
max-evictable-idle-time-millis: 25200000
validation-query: SELECT 1
test-while-idle: true
test-on-borrow: true
test-on-return: false
pool-prepared-statements: true
max-open-prepared-statements: 20
use-global-data-source-stat: true
stat:
db-type: mysql
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
slf4j:
enabled: true
connection-log-enabled: false
connection-log-error-enabled: true
statement-log-enabled: false
statement-log-error-enabled: true
statement-sql-pretty-format: true
statement-executable-sql-log-enable: true
result-set-log-enabled: false
result-set-log-error-enabled: true
wall:
enabled: true
db-type: mysql
log-violation: true
throw-exception: false
config:
select-all-column-allow: false
config:
enabled: false #關閉密碼加密(爲true時候須要利用Druid進行加密數據庫密碼)
aop-stat: #aop狀態監測
enabled: true
patterns:
- acheng1314.cn.*
web-stat: #web狀態監測
enabled: true
stat-view-servlet: #開啓Druid的web監測頁面
enabled: true
transaction:
rollback-on-commit-failure: true
aop:
auto: true
proxy-target-class: true
http:
encoding:
force: true
converters:
preferred-json-mapper: gson
# 開始設置mybatis,具體的意思請參照我前面的的手把手教程
mybatis:
type-aliases-package: acheng1314.cn.domain
mapper-locations: "classpath:acheng1314/cn/dao/*.xml"
configuration:
map-underscore-to-camel-case: true
use-generated-keys: true
use-column-label: true
---
debug: false
spring:
profiles: default複製代碼
關於上面的配置文件其實沒有多大的必要仔細闡述,畢竟大部分都是Druid的配置!上面Druid-Starter和我之前項目的配置文件互相參考基本能夠完成這些配置。同時我在上面把mapper和dao扔到了一塊兒。
接着咱們能夠啓動項目來看看,咱們默認的首頁能夠再網頁上面輸出一串json,以下:
代碼也是很簡單,大概以下:
@RestController
public class HelloWorldController {
@GetMapping(value = "/", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@ResponseBody
public Object sayHello() {
Map<String, Object> map = new HashMap<>();
map.put("aaa", "aaaa");
return map;
}
}複製代碼
其實到這裏,目前的項目已經差很少了。可是,這不是咱們的目標,咱們還應該考慮APIDocs、緩存、權限驗證等等。
相對來講,這個就是容易的多了。
引入資源
compile "io.springfox:springfox-swagger2:2.7.0"
compile "io.springfox:springfox-staticdocs:2.6.1"
compile "io.springfox.ui:springfox-swagger-ui-rfc6570:1.0.0"複製代碼
引入對應的設置
在這裏所謂的引入設置,咱們徹底能夠是配置java代碼
@EnableSwagger2
public class SwaggerConfiguration {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2) //Docket,Springfox的私有API設置初始化爲Swagger2
.select()
.paths(PathSelectors.any())
.build()
.apiInfo(new ApiInfoBuilder() //設置API文檔的主體說明
.title("acheng的SpringBoot探索之路ApiDocs")
.description("acheng的SpringBoot探索之路")
.version("v1.01")
.termsOfServiceUrl("http://acheng1314.cn/")
.build());
}
}複製代碼
到了這裏,咱們並無完,還須要簡單的把SpringFox的配置注入到項目中。以下:
/** * Spring Boot 應用啓動類 * * @author acheng */
@SpringBootApplication
@MapperScan("acheng1314.cn.dao") //提供dao文件
@EnableWebMvc
@ComponentScan(basePackages = "acheng1314.cn.controller")
@Import(SwaggerConfiguration.class)
public class Application extends WebMvcConfigurerAdapter {
public static void main(String[] args) {
// 程序啓動入口
// 啓動嵌入式的 Tomcat 並初始化 Spring 環境及其各 Spring 組件
SpringApplication.run(Application.class, args);
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}複製代碼
而後咱們啓動項目,在瀏覽器地址欄中輸入:
http://localhost:8080/swagger-ui.html#/
http://localhost:8080/druid
http://localhost:8080/複製代碼
上面這幾個地址均能正常訪問! 仔細看看是否是比當初咱們的spring+springMvc+Druid+mybatis整合更加容易呢?本期項目到這裏就算是結束了。
若是你承認我所作的事情,而且認爲我作的事對你有必定的幫助,但願你也能打賞我一杯咖啡,謝謝。