Spring

    쒋은 객체 지ν–₯ μ„€κ³„μ˜ 5가지 원칙 SOLID

    S : SRP(Single Reposibility Principle), 단일 μ±…μž„ 원칙 ν•œ ν΄λž˜μŠ€λŠ” ν•˜λ‚˜μ˜ μ±…μž„λ§Œ κ°€μ Έμ•Ό ν•œλ‹€. μ€‘μš”ν•œ 기쀀은 변경이닀. 변경이 λ°œμƒν• λ•Œ, νŒŒκΈ‰νš¨κ³Όκ°€ 적으면 단일 μ±…μž„ 원칙, 즉 SRP 원칙을 잘 λ”°λ₯Έ 것이닀. O : OCP(Open/Closed Principle), 개방·νμ‡„ 원칙 ν™•μž₯μ—λŠ” μ—΄λ €μžˆμ–΄μ•Ό ν•˜λ‚˜, λ³€κ²½μ—λŠ” λ‹«ν˜€μžˆμ–΄μ•Ό ν•œλ‹€. μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€ν•˜κ³  μ‹ΆμœΌλ©΄, μˆ˜μ •ν•˜λŠ” 것이 μ•„λ‹Œ, μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œ μƒˆλ‘œμš΄ 클래슀λ₯Ό ν•˜λ‚˜ 더 λ§Œλ“€μ–΄μ„œ μƒˆλ‘œμš΄ κΈ°λŠ₯을 κ΅¬ν˜„ν•œλ‹€. κ΅¬ν˜„ ν΄λž˜μŠ€μ™€ μ‹€ν–‰ν΄λž˜μŠ€λ₯Ό μ—°κ²°ν•΄μ£ΌλŠ” Config 클래슀의 λ³€κ²½λ§Œ 있으면 λ³€ν™”λ₯Ό μœ μ—°ν•˜κ²Œ ν•  수 있으며, κ΅¬ν˜„ν΄λž˜μŠ€μ—μ„œμ˜ 직접적인 μˆ˜μ •μ€ ν•„μš”ν•˜μ§€ μ•Šλ‹€. L : LSP(Liskov Substitutuion Pr..

    @ControllerAdvice λŠ” μ–΄λ–»κ²Œ λ™μž‘ν•˜λŠ” κ²ƒμΌκΉŒ?

    πŸ“Œ μ˜ˆμ™Έ 처리 방식 ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ, λ‚΄κ°€ 주둜 ν–ˆλ˜ μ˜ˆμ™Έμ²˜λ¦¬ 방법은 λ‹€μŒκ³Ό κ°™λ‹€. Enum νƒ€μž…μ˜ ErrorCode μ •μ˜ @AllArgsConstructor @Getter public enum ErrorCode { DUPLICATE_USERNAME(HttpStatus.CONFLICT, "이미 μ‘΄μž¬ν•˜λŠ” μ‚¬μš©μžλͺ… μž…λ‹ˆλ‹€."); private HttpStatus httpStatus; private String message; } Http μƒνƒœ μ½”λ“œμ™€ μ—λŸ¬ λ°œμƒ μ‹œ 전달할 메세지 정보가 λ‹΄κΈ΄ Enum νƒ€μž…μ˜ ErrorCode λ₯Ό μ •μ˜ν•œλ‹€. RuntimeException 을 μƒμ†ν•˜λŠ” AppException을 μ •μ˜ @Getter public class AppException extends RuntimeExc..