Clark's endless journey
  • Home
  • Archives
  • Categories
  • Tags
  • About
Diary in 2024/11/07

Diary in 2024/11/07

Hi guy, I just started this new series of article. I try to express myself using my English ability. It might be dull,so I assume no one want to see this. Now bro, get to previous page quickly. Hmm…Wh
2024-11-07
English
#English Diary Personal
Spring MapStruct

Spring MapStruct

在Java的歷史中,我們為了更責任分明的處理資料,誕生出了許多物件,如對應資料庫的Persistent Object(PO)、用來傳輸溝通使用的Data Transfer Object(DTO)、以及用來顯示的Value Object(VO),等等… 這樣針對同一個(廣義來說)物件,根據不同使用情境進行封裝,很好展現出Java的特色(隱藏不必要的細節),但缺點是管理這些物件變得比較麻煩,我們會經常
2024-10-21
Development
#Java #MapStruct
Spring Reflection

Spring Reflection

Spring Reflection──反射,是不少新手開發者會感到不熟悉的部分,而他的概念確實也比較複雜,本次就是好好講個Reflection,以及Reflection怎麼使用。 在幾篇前我們有提到過Java的生命週期是 透過javac把Java程式碼轉換成位元碼,再用JVM去讀取ByteCode並把ByteCode轉換成個平台都可以支援的機器碼。而程式碼的類別都是在編譯階段就已經被載入,並固定下
2024-10-20
Development
#SpringBoot #Reflection
Spring Projection

Spring Projection

我們在前幾次的單元中提到了延遲初始化的概念,但延遲初始化其實並不是解決問題的根本方法,當這個議題產生時,通常想要解決的問題就是──我們一次抓出太多不必要的資料了, 那有沒有一個方法,可以讓我們選擇只抓出部分的資料而不是全部呢?有的!去找吧!我把所有的資源都放在那裡了!那我們今天的分享就到這裡── 嘖!不行嗎?好吧。 Spring Projection 主要想要解決的問題,就是避免撈出不必要的資料,
2024-10-19
Development
#Java #SpringBoot
Spring IOC 與 DI

Spring IOC 與 DI

當初剛學Spring的時候,看著教學大談Spring的設計概念,一直都沒有什麼感覺,直到後來真正開始看大型專案時,才慢慢了解到Spring IOC 與 DI 的概念。 因為這部分 其實並不太好描述,我會參考其他人的描述加上自己的體悟慢慢說明它。 IOC (Inversion of Control) 是什麼?IOC,中文稱作控制反轉,是Spring設計上最為核心的一點。以往整個應用程式的生命週期是由
2024-10-19
Development
#SpringBoot #Inversion Of Control #Dependency Injection
[2024鐵人賽]18-Spring Hibernate Cache

[2024鐵人賽]18-Spring Hibernate Cache

在進行與資料庫溝通時,使用ORM是常見的作法,因此在開發上就少不了要面對Hibernate,儘管可能使用的技術是Spring JPA、JPQL等等,但Hibernate的持久化、快取等等都是同樣的。 之前在Transactional篇我們提到,在Session中與資料庫物件維持對應關係的狀態被稱作Persistent(持久)狀態,而在這個狀態中,為了減少對資料庫的負擔,Hibernate會將取出的
2024-10-18
Development
#Java
Spring Bean延遲初始化

Spring Bean延遲初始化

當你啟動一個專案,Spring Framework會將所有被定義為Bean的物件交給Spring 容器控制,Spring Bean 的一個主要特性是採用了Singleton(單例)模式,也就是Bean的生命週期不是由使用者掌控,而是交給框架,這也是IOC的精神。 但是你有沒有想過,假設你擁有一個開銷昂貴的服務,它的功能並不經常被使用,但是卻佔據了大量的效能,而且又是一個Bean。你可能會想,有沒有
2024-10-17
Development
#SpringBoot #Bean
Spring Transaction (2024鐵人賽-15)

Spring Transaction (2024鐵人賽-15)

做為一個後端工程師,除了要理解程式碼的運作以及副作用之外,對於資料庫的溝通也是重要一課,也許剛開始時沒那麼關鍵,但隨著系統的規模逐漸擴大,你對於系統的了解本身就變得相當重要了。 提到資料庫的存取,我們就不免地提到幾乎是家喻戶曉的ACID定律了。ACID是關聯式資料庫的基本特性,他們規範了一個交易,也就是與資料庫溝通的一個單位,必須具備甚麼特性。他們分別由: Atomicity 原子性 Consi
2024-10-15
Development
#Java #Transaction
SpringBoot ControllerAdvice

SpringBoot ControllerAdvice

上一輪我們提到了,如果在Controller解析物件階段就出錯,就沒有辦法撰寫try catch去 捕捉這部分。這部分其實有很多種處理方法,以下我只介紹兩種。 第一種是比較簡易的做法,就是Spring的ErrorController,Spring預設顯示錯誤會使用ErrorController做為顯示,因此我們可以做的就是定義一個Controller類別並實作ErrorController,就能夠
2024-10-14
Development
#Java #SpringBoot #Exception
Spring TestContainer一次就懂

Spring TestContainer一次就懂

當今天你想要進行Web Application的測試時,除了程式開發,外部的環境配置也是必不可少的,假設你想要開發一個MySQL的應用程式以及一個PostgreSQL的應用程式,你就會必須要在本地安裝兩份資料庫。這是過去的作法。 然而,僅僅因為測試就得安裝一個資料庫的新環境非常麻煩,所以後來在進行開發測試時,許多開發人員都會使用Docker,先在本機下載Image之後在本地執行。如此一來就不必要煩
2024-10-12
Development
#Java #SpringBoot #Test Container
1234567

Search

Hexo Fluid
Access time User Amount