Spring Boot spring-boot-configuration-processor
用途如下。
2020/9/30
2020/9/29
2020/9/27
Spring Boot @PropertySource 依 spring.profiles.active載入對應的properties
Spring可在application.properties
設定spring.profiles.active
的值來切換不同環境用的application
配置檔。而application
外的自訂配置檔透過@PropertySource
載入時也要依spring.profiles.active
載入對應的配置檔的設定如下。
2020/9/26
Spring Data JPA @IdClass複合主鍵範例 composite key example
Spring Data JPA使用@IdClass
設定複合主鍵(composite primary key)範例如下。
2020/9/25
2020/9/24
Spring Boot @ConfigurationProperties with @ConstructorBinding
Spring使用@ConfigurationProperties
及@ConstructorBinding
將properties檔內容以建構式注入到bean。
Spring Boot 使用@ConfigurationProperties 綁定properties至Bean
Spring除了能使用@Value
把properties配置設定值注入到成員變數中外,也可透過@ConfigurationProperties
將properties檔內容綁定到Bean類的屬性。
2020/9/22
2020/9/20
2020/9/19
Spring Boot @ComponentScan掃描指定套件(包) scan specific package
在SpringBoot專案通常都直接把類別放在@SpringBootApplication
類所在package下的package,然後Spring預設會掃描這些package並把掛有@Compoment
、@Repository
、@Service
、@Controller
、@Configuration
的類別註冊為Spring bean。
不過如果專案package及類別非常多會造成啟動時很慢,因為要花很多時間去掃描這些package。要改善此情況可設定只掃描特定的package來提高掃描註冊bean的效率。
2020/9/18
菜鳥工程師 暗色主題 Dark Theme
最近很流行暗色主題,從Facebook,Youtube到IDE,Stackoverflow,Docker官網都推出暗色背景為基調的顏色配置,所以我也來跟隨潮流一下把菜鳥工程師的網頁改成暗色主題風格。暗色看起來真的對眼睛比較不吃力,提高閱讀體驗。
2020/9/17
Spring Boot 操控台印出彩色文字 console log ANSI color output
Spring Boot預設在IDE(IntelliJ IDEA or Eclipse)印出的日誌訊息都是單色的,但透過設定以下參數即可在操控台(console)印出彩色日誌。
IntelliJ Spring Boot java.lang.ClassNotFoundException: javax.servlet.Filter
從SVN checkout下來一個Spring Boot專案在IntelliJ IDEA執行出現java.lang.ClassNotFoundException
錯誤。
2020/9/16
Maven 安裝目錄檔案到本地倉庫發生指定檔案不存在錯誤 install file to local repository specified file not exists
在Windows有pom.xml
的目錄以cmd執行Maven的mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
命令來安裝檔案到local repository時發生錯誤。
2020/9/15
Java inner class shadowing
如果內部類別(inner class)(即非靜態巢狀類別(non-static nested class))成員變數(member variable)名稱與外層類別(enclosing class)的成員變數名稱相同,則內部類別的成員變數會覆蓋(shadowing)外層類別相同名稱的成員變數。
Java 程式執行時出現NoClassDefFoundError錯誤
最近在一個沒有CICD自動部屬的老舊專案。修改好的Java程式如果需要在Dev環境測試,需要把本機編譯好的class檔手動貼到Dev環境的Tomcat WEB/INF/classes
下對照package結構的目錄中來更新。
在本機執行某項功能時明明都正常,但在Dev環境測試時確出現NoClassDefFoundError
錯誤。
2020/9/14
Oracle 找出限制條件資料表 find ORA-02292 constraint table
在Oracle異動資料表時,若發生
ORA-02292: 違反完整性限制條件 (<constraint_name>) - 發現子項記錄
ORA-02292: integrity constraint (<constraint_name>) violated - child record found
代表刪除的資料被外鍵參考,所以有外鍵的限制條件。應該先把參照的子表資料刪除後才能把主表的資料刪除。
透過<constraint_name>
找出參照的資料表的方式如下。
2020/9/13
2020/9/12
MacOS Eclipse 匯入Tomcat原始碼為專案 import Tomcat source code as Eclipse project
在macOS的Eclipse匯入Tomcat原始碼為專案的步驟如下。
2020/9/11
Java 轉位元組陣列為十六進位字串 convert byte array to hexadecimal string
Java 轉位元組陣列byte[]
為十六進位字串(hexadecimal string)的方法如下。
2020/9/7
Servlet 接收表單上傳檔案 upload form data file by Apache Commons FileUpload
在Servlet使用Apache Commons FileUpload接收以form data表單上傳檔案的方法如下。
2020/9/6
2020/9/5
Eclipse 關閉專案減少記憶體用量 closing project to free memory usage
Eclipse在日常工作中通常不會只有一個project(專案),如果project暫時沒有用到的話,可以使用[Close Project]將其關閉。
TortoiseSVN 建立及套用修補檔 create and apply patch
最近又回去用很難用的SVN,想把修改的程式暫存起來之後回復,在git有git stash
,但在SVN似乎只能用patch來達成類似的目的,除了麻煩外限制也很多。
2020/9/4
ORA-01008: 部份變數未被連結 not all variables bound
今天寫好久沒碰的PreparedStatement
,結果執行時出現
ORA-01008: 部份變數未被連結
錯誤。
2020/9/3
2020/9/2
RockTek Rii mini i8+ 無線語音觸控鍵盤開箱
上網買了RockTek Rii mini i8+ 無線觸控鍵盤,原因是長時間使用滑鼠鍵盤造成我的頸肩非常痠痛,所以買了這台掌上鍵盤做些輕量的事,例如瀏覽網頁、Youtube或PTT。