1. 程式人生 > >SpringBoot相關的知識點總結

SpringBoot相關的知識點總結

1,為SpringBoot的Controller類寫測試類,如下:

下面針對該Controller編寫測試用例驗證正確性,具體如下。當然也可以通過瀏覽器外掛等進行請求提交驗證: package com.kfit.demo; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.mock.web.MockServletContext; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.RequestBuilder; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import com.kfit.controller.UserController; @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes=MockServletContext.class)//MockServletContext.class @WebAppConfiguration public class UserControllerTest extends MockMvcResultMatchers{ //模擬mvc物件類. private MockMvc mvc; @Before public void setup(){ /* * MockMvcBuilders使用構建MockMvc物件. */ mvc = MockMvcBuilders.standaloneSetup(new UserController()).build(); } @Test public void testUserController() throws Exception{ RequestBuilder request = null; //1. get 以下user列表,應該為空》 //1、構建一個get請求. request = MockMvcRequestBuilders.get("/users"); mvc.perform(request) .andExpect(status().isOk()) .andExpect(content().string("[]")) ; System.out.println("UserControllerTest.testUserController().get"); // 2、post提交一個user request = MockMvcRequestBuilders.post("/users") .param("id","1") .param("name","林峰") .param("age","20") ; mvc.perform(request).andExpect(status().isOk()).andExpect(content().string("success")); // 3、get獲取user列表,應該有剛才插入的資料 request = MockMvcRequestBuilders.get("/users"); mvc.perform(request).andExpect(status().isOk()).andExpect(content().string("[{\"id\":1,\"name\":\"林峰\",\"age\":20}]")); // 4、put修改id為1的user request = MockMvcRequestBuilders.put("/users/1") .param("name", "林則徐") .param("age", "30"); mvc.perform(request) .andExpect(content().string("success")); // 5、get一個id為1的user request = MockMvcRequestBuilders.get("/users/1"); mvc.perform(request) .andExpect(content().string("{\"id\":1,\"name\":\"林則徐\",\"age\":30}")); // 6、del刪除id為1的user request = MockMvcRequestBuilders.delete("/users/1"); mvc.perform(request) .andExpect(content().string("success")); // 7、get查一下user列表,應該為空 request = MockMvcRequestBuilders.get("/users"); mvc.perform(request) .andExpect(status().isOk()) .andExpect(content().string("[]")); } }

2,使用

@ConfigurationProperties註解進行編碼

需要下面的依賴 <!--spring boot 配置處理器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional>         </dependency> 配置類可以這樣寫: @ConfigurationProperties
(prefix="com.kfit.blog") public class BlogProperties { private String name;//部落格作者 private String title;//部落格標題 // 省略gettersetter } 在啟動類中加入: @EnableConfigurationProperties({BlogProperties.class}) 這種的好處就是隻需要配置一個地方,其它地方就是正常定義類的屬性即可了。 3, 這條命令:java -jar xxx.jar --server.port=8888,通過使用--server.port屬性來設定
xxx.jar應用的埠為8888 4, 多環境的配置思路:    application.properties中配置通用內容,並設定spring.profiles.active=dev,以開發環境為預設配置    application-{profile}.properties中配置各個環境不同的內容 通過命令列方式去啟用不同環境的配置。 執行java -jar xxx.jar --spring.profiles.active=prod,可以觀察到服務埠被設定為80,也就是生產環境的配置(prod 5,在springboot的開發中,開發包和測試包必須一一對應,否則build的時候會出錯的. 6,在springboot 的入口類中,我們只需要打上:@SpringBootApplication即可.其他的就免了,比如:  @Configuration  @EnableAutoConfiguration  @ComponentScan 因為前者是後面幾個的彙總. 7,RESTful API
請求型別 URL 功能說明
GET /users 查詢使用者列表
POST /users 建立一個使用者
GET /users/id 根據id查詢一個使用者
PUT /users/id 根據id更新一個使用者
DELETE /users/id 根據id刪除一個使用者
8,程式碼提交命令 git pull origin features:features (前一個是遠端倉庫,後者是本地倉庫) git add . git commit -m "updated some bugs" git push origin features origin/features 9, 從前端傳來日期的字串,然後在專案中把字串轉化為Date型別,然後傳入JPA的查詢語句中. 順便說下,在mysql中日期的比較可以直接使用 between and 進行.例如: select * from `apps` where `created_at` between "2012-06-26 00:00:00" and "2012-06-26 00:00:00"; @Query("select mon from Monetization mon where appId=:appId and datetime between :startDate and :endDate group by dayid")
第一步:接收串 @GetMapping("/adrevenues") public ResponseEntity listReveByAppidAndDate(@RequestParam("appId") String appId, @RequestParam("startDate")String startDate,@RequestParam("endDate")String endDate){ List<Monetization> monetizationList=monetizationService.findByAppidAndDate(appId,startDate,endDate); List<RevenueDto> monetizationDtoList=Lists.newArrayList(); monetizationDtoList.addAll(monetizationList.stream().map(this::convertReven).collect(Collectors.toList())); return ResponseEntity.ok(monetizationDtoList); } 第二步:轉換 @Override public List<Monetization> findByAppidAndDate(String appId, String startDate, String endDate){ Date start= null; try { start = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(startDate); Date end=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(endDate); return monetizationRepository.findByAppidAndDate(appId,start,end); } catch (ParseException e) { e.printStackTrace(); } return Collections.emptyList(); } 第三步:使用Date型別與mysql進行互動 public interface MonetizationRepository extends JpaRepository<Monetization,Long>{ @Query("select mon from Monetization mon where appId=:appId and datetime between :startDate and :endDate group by dayid") public List<Monetization> findByAppidAndDate(@Param("appId")String appId, @Param("startDate")Date startDate, @Param("endDate")Date endDate); }

相關推薦

js事件相關知識點總結

模型 em1 detach 事件偵聽 包含 ring 分享 target 上傳 HTML頁面是怎樣實現交互的? 2017-05-22 js事件之事件流: 事件流原理圖:事件流是從window開始,最後回到window的一個過程,分為三個階段(1~5)捕獲過程、(5~6)

【幹貨】JS相關知識點總結

名稱 javascrip 過程 進行 匿名函數 wid logs def image 一、獲取元素方法 可以使用內置對象document上的getElementById方法來獲取頁面上設置了id屬性的元素,獲取到的是一個html對象,然後將它賦值給一個變量。如下: 上面的

java線程池相關知識點總結

http 緩沖區 博客 能開 keepal 線程同步 ole 機制 linked Android中常見到的很多通用組件一般都離不開”池”的概念,如各種圖片加載庫,網絡請求庫,即使Android的消息傳遞機制中的Meaasge當使用Meaasge.obtain()就是使用的M

Hash基礎相關知識點總結

直接 最大 我們 哈希表 位數 htm 3.2 海明距離 文本去重 1 哈希表(Hash Table) 說明:一種特殊的數據結構。 特點:可以快速實現查找、插入和刪除。 1.1 基本思想 數組的特點:尋址容易,但插入和刪除困難。 鏈表的特點:尋址困難,但插入和刪除容易。

C++中繼承的相關知識點總結

1. OOP中的一個重要概念就是繼承,它允許程式從已有類派生出新類。新類自動繼承已有類的資料成員與成員函式 2. 派生類不會繼承建構函式、拷貝建構函式、解構函式或其他過載的賦值運算子 3. 在例項化派生類物件時,基類建構函式在派生類建構函式呼叫之前自動呼叫 4. 在銷燬派生類物件時,基類解構函式在派

查詢與排序相關知識點總結

1.查詢 查詢相對而言較為簡單,包括順序查詢、二分查詢、雜湊表查詢和二叉排序樹查詢。 二分查詢在面試中最為重要,可用迴圈和遞迴實現。 雜湊表和二叉排序樹查詢的重點在於考查對應的資料結構而不是演算法。雜湊表最主要的優點是能夠在O(1)時間內查詢某一元素,是效率最高的查詢方式;但其缺點是需要

C++繼承相關知識點總結

1:派生類繼承基類的成員並且可以定義自己的附加成員。每個派生類物件包含兩個部分:從基類繼承的成員和自己定義的成員。         每個派生類物件都有基類部分,包括基類的private成員。類可以訪

第九章 動態規劃相關知識點總結

一、動態規劃 動態規劃的核心是 狀態 和 狀態轉移方程。 解決動態規劃的方法一般有兩種  1、遞推計算 遞推計算的關鍵是邊界和計算順序 2、記憶化搜尋 記憶化搜尋不用事先確定計算順序,所謂的記憶化搜尋,就是給每個狀態設定一個標誌,當這個狀態已經被計算過,通過標誌判斷不再重複

Docker容器相關知識點總結

一:簡介        1:什麼是docker?                                        2:docker解決了什麼問題?              Docker解決了執行環境和配置問題,方便釋出,也就方便做持續整合。        

C++ 虛擬函式、純虛擬函式、繼承、虛表、多型原理相關知識點總結

虛擬函式與純虛擬函式 虛擬函式為了過載和多型的需要,在基類中是有定義的,即便定義是空,所以子類中可以重寫也可以不寫基類中的此函式! 純虛擬函式在基類中是沒有定義的,必須在子類中加以實現,很像java中的介面函式! 虛擬函式 引入原因:為了方便使用多型特性,我們常常需要

Spring和Springboot相關知識點整理

# 簡介 本文主要整理一些Spring & SpringBoot應用時和相關原理的知識點,對於原始碼不做沒有深入的講解。 #1. 思維導圖 右鍵新視窗開啟可以放大。 ![](https://img2020.cnblogs.com/blog/228024/202006/228024-2020062414175

SpringBoot相關知識點總結

1,為SpringBoot的Controller類寫測試類,如下: 下面針對該Controller編寫測試用例驗證正確性,具體如下。當然也可以通過瀏覽器外掛等進行請求提交驗證: package com.kfit.demo; import org.junit.Befo

JavaWeb筆記-23-知識點總結(ajax請求及案例相關

知識點: 1)load事件通常用於檢測文件內容或者圖片是否載入完畢 2)window.onload 是註冊在window物件上的load事件 作用:window.onload是一個事件,當文件內容完全載入完成會觸發該事件 背景:網頁中的某些JavaScr

ECMAScript 6知識點總結 --- 面向物件相關

物件相關概念 const str = new String('apple') // 判斷例項在不在建構函式中: console.log(str instanceof String) // true // 從建構函式中獲取原型: console.log(String.prototype)

【Java集合相關知識點的簡單總結

1. 集合相關知識點 1. 集合體系概述 頂層兩大介面 Collection 和 Map 兩者 平級 Collecti

SpringBoot中如何使用jpa和jpa的相關知識總結

1.介紹jpa的簡單概念: JPA顧名思義就是Java Persistence API的意思,是JDK 5.0註解或XML描述物件-關係表的對映關係,並將執行期的實體物件持久化到資料庫中。 2.jpa的優勢: 2.1標準化 JPA 是 JCP 組織釋出的 Java EE

學習eureka註冊中心雙節點 總結相關知識點

首先新建eureka專案,在這裡就不詳細敘述了。在搭建框架的時候,由於對之前的知識點模模糊糊,重新又複習了一遍。 在看pom檔案的時候有好多地方知識盲區不清楚,今天搞清楚記錄一下。 pom 檔案中經常建的屬性就不說了,下來說一說不經常見的 <dependencyM

Person Re-ID相關知識點、資料集及評估指標總結

0. 背景 人臉識別技術目前已發展的較為成熟,在很多場景與產品中都已有落地的應用,但人臉識別技術只能用到人體的人臉資訊,而人體的其他重要資訊得不到充分的利用,例如:衣著、姿態、行為等。另外在應用時必須要有清晰的人臉正面照片,但在很多場景下無法滿足要求,例如低頭、背影、模糊身形、帽子遮

Socket編寫一個簡易的聊天室(相關知識點總結

初次接觸到Socket的時候,還以為是網路程式設計的部分。學完後才發現,他也是Java中的一個類。只是它和TCP協議掛鉤了。在用Socket的時候要考慮到網路和協議的問題,以及每個應用程式相對應的埠,當伺服器或者客服端通過網路接受到資訊的時候,會先根據IP地址找到相應的位置

劍指offer——鏈表相關問題總結

時間復雜度 k個結點 listnode 轉載 pbe push_back loop 結點 art 首先統一鏈表的數據結構為: struct ListNode { int val; struct ListNode *next; ListNode