--- tags: 教育訓練 --- [TOC] # Java/SpringBoot 練習題 ## EX_001 建立SpringBoot Console Application 1. 建立一個SpringBoot Console maven專案 * https://www.baeldung.com/spring-boot-console-app * https://start.spring.io/ 1. 引入maven專案至eclipse中 2. 使用log4j,印出"Hello World!! Today is 2022/XX/XX", 將今天日期格式化為西元/月/日字串,以參數方式傳入log4j 3. eclipse中,執行專案,檢查結果 4. 使用mvn 命令 build出 jar檔 5. 執行java -jar 執行jar檔,檢查結果 ::: info 1. 在springboot 使用 slf4j,列印log 2. slf4j設定,xml or application.properties 3. slf4j 列印格式化 4. 日期物件 Date vs LocalDateTime ::: ## EX_002 讀取使用者輸入 1. 建立一個SpringBoot Console專案 2. 此程式啟動後,等待使用者輸入字串 3. 使用者輸入字串後按enter後,程式印出輸入內容 ## EX_003 建立簡易計算機 1. 建立一個SpringBoot Console專案 2. 此程式可接受命令列3個參數,舉例: "1 + 1", "1 * 2", "4 / 2" 3. 運算元可處理(+ - * /) 4. 若輸入參數數目不對,或不支援的運算,印出 usage: 語法 5. 若輸入正確,則輸出結果 6. 使用junit 驗証元件功能(單元測試) :::info 1. 如何接收命令列參數 2. 如何在eclipse下執行有參數的程式 3. 使用enum表示運算元 4. 定義一個計算機界面(Interface),並建立二個計算機物件(BasicCalculator、SuperCalculator)實作計算機界面 5. 將計算機界面改寫成抽象類別(abstract) 6. SpringBoot Favor 1. CommandLineRunner 2. @Component 3. @PostConstruct 4. @Autowired - Field or Constructor Injection? 5. @Configuration 6. @Bean 7. load item from applicaiton.properteist @Value("${test.msg}") 7. JUnit with/without SpringBoot (@SpringBootTest) ::: ## EX_004 讀寫JSON 1. 建立一個SpringBoot Console專案 2. 建立一個資料物件(Data Object) 3. 引入Google GSon 函式庫 4. 將此資料物件,以json的格式儲存至檔案中 5. 讀取JSON格式檔案,將檔案中內容讀入至資料物件中 ## EX_005 執行緒 1. 建立一個SpringBoot Console專案 2. 創建一個thread,此thread執行一個for-loop,印出1~100, 每次印出後,睡10ms 3. 主程序需等待此thread 執行完後才能結束 (thread join) ## EX_006 執行緒互動 1. 建立一個SpringBoot Console專案 2. 建立一個Counter物件或全域變數 3. 創建二個thread,一個thread負責印出奇數,另一個thread負債印出偶數 4. thread每次印完數字後,將counter+1,並notify 喚醒另一thread後,自身進入wait狀態 5. counter+1 此操作建議使用synchronzied 保護 6. 當counter > 50時,結束thread 7. 主程序需等待此thread執行完後才能結束 (thread join) ## EX_007 時間比較 1. 建立一個SpringBoot Console專案 2. 使用者輸入一個日期字串,如"2022/05/11 11:26:00" 3. 若大於等於目前時間,則印出1,否則印出0 ## EX_008 排序,使用Comparator 1. 建立一個SpringBoot Console專案 2. 建立一個Person物件,包含name(string), id(int)欄位,覆寫物件的toString函式,輸出一個容易閱讀的格式 3. 建立一個```ArrayList<Person>```,並產生一些Person物件,insert至list中 3. 將```ArrayList<Person>```利用comparaor針對 id 或 name 排序 1. 輸入排序後的結果 ## EX_009 呼叫外部程式 1. 在程式中啟動chrome,並讓chrome導向到www.tric.com.te ## EX_010 Spring Schedule 1. 建立一個SpringBoot Console專案 2. 利用@Scheduled annotation建立排程 3. 建立一個listener,並註冊至排程元件中 4. 該排程元件,每10秒通知listener一次 5. 在listenr的實作,收到通知後會印出目前時間 ## EX_011 JDBC Template 1. 安裝mySql 2. 在程式中連接資料庫,取得JDBCTemplate 3. 使用Jdbc Template 1. 建立表格 2. CRUD SQL ## EX_011 SpringBoot JPA 參考範例:https://matthung0807.blogspot.com/2019/05/spring-boot-2-spring-data-jpa-mysql-8.html 使用JPA存取資料庫,重點了解 1. spring中資料庫相關設定 1. @Entity, @Repository, @Service 等使用方式 ## EX_012 Transaction ## 建立Restful API ## Socket通訊 ## ByteArray處理 ## Refactor # Coding Style ## Don't use "else" if possible (2022/05/13) * https://youtu.be/EumXak7TyQ0 * https://youtu.be/ZzwWWut_ibU