原创 SpringMVC配置類WebMvcConfigurerAdapter學習總結

WebMvcConfigurerAdapter配置類是spring提供的一種配置方式,採用javabean的方式替代傳統的基於xml的配置來對spring框架進行自定義的配置。因此,在springboot提倡的基於註解的配置 &&

原创 Springboot對web應用的統一異常處理

我們在做Web應用的時候,請求處理過程中發生錯誤是非常常見的情況。Spring Boot提供了一個默認的映射:/error,當處理中拋出異常之後,會轉到該請求中處理,並且該請求有一個全局的錯誤頁面用來展示異常內容。 默認情況下,S

原创 MyBatis自定義類型處理器 TypeHandler

在項目開發中經常會遇到一個問題: 當我們在javabean中自定義了枚舉類型或者其它某個類型,但是在數據庫中存儲時往往需要轉換成數據庫對應的類型,並且在從數據庫中取出來時也需要將數據庫類型轉換爲javabean中的對應類型。比如:

原创 由防重複點擊引發的冪等性問題思考

HTTP/1.1中對冪等性的定義是:一次和多次請求某一個資源對於資源本身應該具有同樣的結果(網絡超時等問題除外)。也就是說,用戶對於同一操作發起的一次請求或者多次請求的結果是一致的,不會因爲多次點擊而產生了副作用。舉個最簡單的例子

原创 使用fastjson提供的接口實現自定義的編解碼器

FastJson中文 API 在項目開發中經常會遇到一些業務需要對某些數據進行特殊的定製化處理,fastjson爲我們提供了接口可以用於實現自定義的編解碼器來完成我們的業務要求。 ObjectSerializer和ObjectDe

原创 在springboot中使用springsecurity實現安全控制

SpringSecurity官方文檔 我們在編寫web應用時經常要對一些頁面做安全控制,比如:對於沒有訪問權限的用戶需要轉到登錄表單頁面。要實現訪問控制方法的多種多樣,可以通過AOP、攔截器實現,也可以通過框架實現(如:Apach

原创 自定義類型處理器的應用

問題描述: 一個JSON字符串在轉對象的時候報JSON解析異常的錯誤,我仔細看了一下錯誤堆棧,是枚舉導致的數組越界問題。 [ { "fee":0, "amount":15,

原创 自定義Redis序列化工具

爲什麼用戶需要自己創建一個redis配置類? SpringBoot提供了對Redis的自動配置功能,在RedisAutoConfiguration類中默認爲我們配置了客戶端連接(Lettuce和Jedis),以及數據操作模板(St

原创 Java註解

java註解是Java提供的一種原程序中的元素關聯任何信息和任何元數據的途徑和方法。 Java中常見的註解 1、jdk自帶註解 Java SE5內置了三種標準註解: @Override:表示當前的方法定義將要覆蓋超類中的方法; @

原创 使用HttpMessageConverter實現HTTP的序列化和反序列化

對象的序列化/反序列化大家應該都比較熟悉:序列化就是將object轉化爲可以傳輸的二進制,反序列化就是將二進制轉化爲程序內部的對象。序列化/反序列化主要體現在程序I/O這個過程中,包括網絡I/O和磁盤I/O。 那麼什麼是http序

原创 如何在項目啓動時就執行某些操作

參考資料:如何在項目啓動時就執行某些操作 在實際的項目開發中經常會遇到一些需要在項目啓動的時候進行初始化操作的需求,比如初始化線程池,配置某些對象的序列化和反序列化方式,加載黑名單白名單,加載權限應用,加載組織架構到緩存等等。這篇

原创 jdk1.8新特性(五)——Stream

轉載自:https://mp.weixin.qq.com/s/adKZrOe6nFEmuADHijsAtA 在Java中,集合和數組是我們經常會用到的數據結構,需要經常對他們做增、刪、改、查、聚合、統計、過濾等操作。相比之下,關係型數

原创 打印HTTP request body和response body實現日誌跟蹤

request 的inputStream和response 的outputStream默認情況下是隻能讀一次, 不可重複讀;這就導致要獲取請求體或者響應體信息時必須要聲明包裹類wrapper; spring爲此提供了兩個對應的包裹類C

原创 Jdk1.8新特性(一) 接口的default方法

Jdk1.8之前的接口中通常只聲明方法的簽名,方法的具體實現在子類中進行。Jdk1.8打破了這樣的用法:接口中可以實現具體的方法體,只需要加上關鍵字static或者default修飾即可。 1)使用static來修飾的稱之爲靜態方法,

原创 Jdk1.8新特性(三)——方法引用::

Lambda表達式可以用來創建匿名方法,有時候使用lambda表達式僅僅是調用一個已存在的方法: Arrays.sort(stringsArray,(s1,s2)->s1.compareToIgnoreCase(s2)); 在jav