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..