SpringBoot學習筆記1 - 20181127
阿新 • • 發佈:2018-12-08
一.引用
- 作用
- 用來簡化Spring應用的初始化搭建以及開發過程。
- 快速專案構建,簡化配置
- Springboot(微框架)=Spring(專案管理框架)+SpringMVC(控制器)
- 規範(約定俗成)
- 在底層子包外,有一個Application.java
入口類,一個springboot專案,有且只有一個 - springboot的約定(就是配置,也稱”約定大於配置“)
applicaton.yml 或 application.properties,且必須在src/main/resources根目錄
-
springboot的特點
①建立獨立的spring應用
②嵌入Tomcat,無需部署war檔案
③簡化Maven配置
④自動配置Spring
⑤沒有xml的配置 -
開發環境要求
①Maven 3以上
②Spring FrameWork 4以上
③Jdk1.7以上 boot2在1.8以上
④springboot 1.5以上
二.Springboot第一個搭建環境
- pom.xml依賴
<!-- springboot的父級專案依賴 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId >
<version>1.5.7.RELEASE</version>
</parent>
<!-- springboot的web依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 測試 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<!-- 只在test測試裡面執行 -->
<scope>test</scope>
</dependency>
- 書寫springboot的入口類 Application.java
@SpringBootApplication
public class Application {
//啟動springboot應用
public static void main(String[] args) {
//引數1:springboot入口類物件、引數2:main函式的引數
SpringApplication.run(Application.class,args);
}
}
@SpringBootApplication
修飾範圍:只能用在入口類上 唯一
作用:
①.代表當前應用是一個springboot構建的應用
②.代表這個類是springboot的入口應用
- 書寫springboot的約定 application.yml
server:
port: 9090
context-path: /springboot
三.SpringBootApplication註解拆解
入口類上註解,是以下三個註解的組合
@SpringBootApplication //自動配置spring相關內容
@EnableAutoConfiguration //第三方jar與springboot自動配置
@ComponentScan //手動指定包掃描,預設掃描入口類當前包及其包下子包
注意:
@SpringBootConfiguration繼承自@Configuration,二者功能也一致,標註當前類是配置類,
並會將當前類內宣告的一個或多個以@Bean註解標記的方法的例項納入到spring容器中,並且例項名就是方法名。
其他註解:
spring4中
@RestController //基於restful風格控制器
//使用在controller類上,相當於@Controller + @ResponseBody
//作用:將類中所有方法的返回值以json格式響應
四.更換啟動banner圖
在resources包下,建立banner.txt,並在其中書寫內容,我的示例如下:
______ _____ ______ __ __ __
/ ____/ ____ / ___/ ____ __ __ _____ _____ / ____/ ____ / / / / / /
/ / __ / __ \ \__ \ / __ \ / / / / / ___/ / ___/ / / __ / __ \ / / / / / /
/ /_/ / / /_/ / ___/ / / /_/ // /_/ / / / (__ ) / /_/ / / /_/ / /_/ /_/ /_/
\____/ \____/ /____/ / .___/ \__,_/ /_/ /____/ \____/ \____/ (_) (_) (_)
/_/
五.Springboot的檢視解析 與 中文亂碼問題
springboot中預設的檢視解析器是:thymeleaf(view層框架)
springboot整合jsp:
- 引入springboot對jsp頁面支援依賴
<!--jstl-->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!--引入springboot 對jsp頁面的支援-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
- 通過約定,明確檢視解析器
注意:使用main函式方式啟動預設內嵌的tomcat,不會解析jsp頁面
spring:
mvc:
view: #試圖解析器
prefix: /
suffix: .jsp
http:
encoding:
charset: utf-8 #中文亂碼問題
force: true
- 專案中引入支援jsp啟動外掛
<plugins>
<!--springboot 支援jsp啟動外掛-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
- 使用外掛啟動,才能支援jsp頁面,右側maven中
Pligins — springboot-boot — springboot:run
【Lifecycle — clean 清除冗餘編譯】
【springboot 1.5.x之後,使用內建tomcat8,編碼為utf-8 / 之前的編碼為iso-8859-1】
【選中 single instance only 單例執行run,最方便】
六.springboot中約定的拆分(配置檔案的拆分)
spring.profiles.active:xxx #啟用哪個檔案生效(寫檔案-後邊單詞即可)
七.springboot與MyBatis整合
- 引入mybatis的依賴
<!--引入springboot和mybatis整合jar-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!--引入mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<!--druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
- 配置application.yml
①資料來源
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource #指定資料來源
driver-class-name: com.mysql.jdbc.Driver #指定驅動
url: jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8 #指定url
username: root
password: root
②mapper配置檔案的位置 和 實體起別名
mybatis:
mapper-locations: classpath:com/abc/mapper/*Mapper.xml #指定mapper配置檔案位置
type-aliases-package: com.abc.entity #指定起別名的包
- 入口類上 加介面位置掃描
@SpringBootApplication
@MapperScan("com.abc.dao")
public class Application {
}
八.springboot本地測試JUnit
- 引入兩個測試依賴 junit4.12 和 spring-boot-start-test
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- 測試 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<!-- 只在test測試裡面執行 -->
<scope>test</scope>
</dependency>
- 建立測試類示例
//在當前類例項化啟動springboot應用
//當測試類與入口類不平級時,需手動指定入口類;要求junit4.12
@SpringBootTest(classes = Application.class)
@RunWith(SpringRunner.class)
public class TestUser {
@Autowired
private UserDAO userDAO;
@Test
public void test1(){
User user = userDAO.selectByPrimaryKey("1");
System.err.println(user);
}
}
ps:解決注入dao紅色下劃線問題!
在DAO介面加如下註解:
@Mapper
@Component(value = "userDAO")
public interface UserDAO {
@Mapper
@Component:定義Spring管理Bean,通過@Component將切面定義為Spring管理Bean,像@Service、@Controller、@Repository都是其擴充套件
- 其他
- JUnit是一款優秀的開源Java單元測試框架,也是目前使用率最高最流行的測試框架,開發工具Eclipse和IDEA對JUnit都有很好的支援,JUnit主要用於白盒測試和迴歸測試。
~ 白盒測試:把測試物件看作一個開啟的盒子,程式內部的邏輯結構和其他資訊對測試人 員是公開的;
~ 迴歸測試:軟體或環境修復或更正後的再測試;
~ 單元測試:最小粒度的測試,以測試某個功能或程式碼塊。一般由程式設計師來做,因為它需要知道內部程式設計和編碼的細節; - 在測試資料操作的時候,我們不想讓測試汙染資料庫,也是可以實現的,只需要新增給測試類上新增“@Transactional” 即可,這樣既可以測試資料操作方法,又不會汙染資料庫了。
九.springboot中jsp頁面的熱部署
- 引入熱部署依賴(注意,先下載依賴,再配成外掛)
<!--springboot 支援jsp啟動外掛-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.7.RELEASE</version>
</dependency>
</dependencies>
</plugin>
- 開啟idea自動編譯功能
settings — Compiler — Build project automatically或Make~ - 配置檔案中
server:
jsp-servlet:
init-parameters:
development: true #開啟jsp的熱部署配置
十.springboot 整合 FastJSON
- 引入依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.49</version>
</dependency>
- 在入口類中加入配置
//FastJson配置
@Bean //@Bean 將配置的東西作為bean物件,交給工廠處理
public HttpMessageConverters fastjsonHttpMessageConverter(){
//定義一個轉換訊息的物件
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
//新增fastjson的配置資訊 比如 :是否要格式化返回的json資料
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
//在轉換器中新增配置資訊
fastConverter.setFastJsonConfig(fastJsonConfig);
HttpMessageConverter<?> converter = fastConverter;
return new HttpMessageConverters(converter);
}
- FastJson也可以利用 WebMvcConfigurerAdapter(非入口類方法)