[Spring Boot] Validation 관련 : BindingResult 클래스
·
Java/Spring Boot
#  관련 포스팅  - Validation 개념 : https://young0105.tistory.com/194 BindingResult 클래스  - @Valid에 대한 결과 값을 갖는 클래스       → 직접 예외에 대한 클래스를 컨트롤할 수 있음 (POST 요청에서 자주 사용됨)  - 단독으로 매개변수에 들어가면 오류 발생      → 반드시 유효성 검사 대상인 다른 매개변수 바로 뒤에 지정되어야 함  - Error에 대한 정보를 담는 DTO 클래스를 따로 만들어서 DTO 형식으로 에러 정보를 보낼 수도 있음 1234567891011121314151617181920212223242526272829303132333435@PostMapping("/user3")public ResponseEnti..
[Spring Boot] Validation (유효성 검사)
·
Java/Spring Boot
Validation  - 예외를 방지하기 위해 미리 검증하는 과정 (방어적 코드를 대신해서 사용할 수 있음)  - 검증해야 할 값이 많은 경우 코드의 길이가 길어짐      → 횡단 관심사 (AOP 기반) : 핵심 기능과의 분리  - 흩어져 있는 경우 어디에서 검증하는지 알기 어려움      → 재사용에 대한 한계가 있음  - 검증 로직이 변경되는 경우, 참조하는 클래스에서 로직이 변경되어야 하는 부분이 발생할 수 있음  - 메서드 호출 전/후에 필터링 및 검증 수행 #  Validation 라이브러리 추가하기 (Gradle 빌드)  1. build.gradle 파일에 명시 1234dependencies {    implementation 'org.s..
[Java] 옵저버 패턴 (Observer pattern)
·
Java/Design Pattern
옵저버 패턴 (Observer pattern, 콜백 메서드)  - 한 객체의 상태가 변하면 그 객체에 의존하는 다른 객체들에게 통지되고, 자동으로 내용이 갱신됨  - 호출이 되면 돌아감  - 구현한 기능은 필요에 따라 가져와서 사용할 수 있게 됨   - 예시] Swing의 이벤트 리스너 : https://young0105.tistory.com/83  예제 코드1.  인터페이스 선언더보기12345public interface IButtonListener {     void clickEvent(String event);    }Colored by Color Scriptercs" dat..
[Spring Boot] AOP (관점 지향 프로그래밍) ★
·
Java/Spring Boot
AOP (Aspect Oriented Programming)  - 프로그램을 구성하는 여러 모듈에서 공통적으로 사용하는 코드를 분리함      → 재사용성 & 유지보수성 향상  - 프로그램의 여러 지점에서 반복적으로 사용되는 기능을 모듈화함      → 코드 중복 감소 & 코드 가독성 향상  - 핵심적인 코드와 부가적인 코드(방어적 코드 등)를 분리함      : 핵심 기능에 영향을 미치지 않으면서, 부가적인 기능을 제공할 수 있음       → 횡단 관심사를 핵심 관심사와 분리하여 구현하는 기법  - OOP (객체 지향 프로그래밍)의 보완(보조)적인 개념 #  AOP 라이브러리 추가하기 (Gradle 빌드)  1. build.gradle 파일에 명시 12345dependencies {&nbsp..
[Spring Boot] ResponseEntity
·
Java/Spring Boot
ResponseEntity  - 결과 데이터와 HTTP 상태 코드를 직접 제어할 수 있는 클래스  - ResponseEntity를 사용한 일관된 형식을 만들어서 return함으로써, API 개발이 편리해짐 12345678910111213141516171819202122232425// User : DTO @PostMapping("/post")public ResponseEntity<User> post(@RequestBody User user) {     // HTTP 메세지 바디의 데이터를 user object로&nbsp..