전체 글 375

[JAVA] Optional

Optional >NPE(NullPointerException) 말 그대로 null 값이 할당되면 안되는 곳에 예상하지 못한 null 값이 할당되는 경우 발생하는 예외이다. 이를 방지하기 위해서는 null 값이 할당될 경우를 막아야하는데, 변수가 많을 경우 코드가 굉장히 복잡해진다. 다른 방법으로 아예 null을 할당할 수 있는 타입을 사용하면 NPE를 피할 수 있다. Wrapper 클래스가 null을 할당할 수 있는 대표적인 타입이며, 그중에서도 Optional 클래스를 알아두면 좋다. >Optional 객체 생성 -Optional.empty() : 값이 null인 경우 해당 메서드로 Optional의 객체를 생성할 수 있다. -Optional.of() : 값이 null이 절대 아닌 경우, 해당 메서드..

Memo/짧은 메모 2022.10.23

42.04_[Spring MVC] API 계층; Custom Annotation_22.10.23

Custom Validation >Custom Validation : 사용하는 Bean Validation에 내장된 애너테이션 중 나의 목적에 맞는 것이 없을때, 직접 애너테이션을 만들어 사용할 수 있다. : 사용자 정의 유효성 검증을 하기 위해서는 Custom Annotaion과 이를 처리할 Custom Validator 클래스가 필요하다. : Custom Annotation은 Custom Validator를 작동하게 만드는 스위치 역할을 하고, Custom Validator가 어떤 기능의 유효성 검증을 하는지에 대한 로직을 구현한다. >Custom Annotaion @interface : 어노테이션은 인터페이스 중 특별한 종류의 인터페이스이므로 @interface 타입으로 선언하여 작성한다. : @i..

42.03_[Spring MVC] API 계층; Rest Client_22.10.22

현재는 러프하게 이해한 상태이다. 이후 꼼꼼히 정리할 때, 조금 깊이있게 공부하고 유클의 심화학습도 참고하자. Rest Client >클라이언트와 서버 : 클라이언트와 서버의 관계는 상대적이다. : 데이터를 요청하게 되면 그게 무엇이든 클라이언트가 되고, 데이터를 응답하는 것은 서버가 된다. : 정확히는 어떤 서버가 HTTP 통신을 통해서 다른 서버의 리소스를 이용한다면, 그때 그 서버는 클라이언트 역할을 한다. >Rest Client : Rest API 서버에 HTTP 요청을 보낼 수 있는 클라이언트 툴 또는 라이브러리를 의미함. : Postman 같은 경우가 Rest Client이다. 근데 UI가 갖춰진. : Backend A와 Backend B 서버같이 UI가 없는 서버간 HTTP 요청을 보내기 위..

42.02_[Spring MVC] API 계층; HTTP Header_22.10.22

추가 학습 내용이니 당장은 깊이 빠지지 말 것. >HTTP header : HTTP Message의 구성 요소 중 하나 (Header + Body) >HTTP 헤더의 사용 -Content-Type : HTTP Message Body의 데이터 형식의 정보를 제공함 : application/json -Authorization : 헤더의 정보중 하나인 Authorization을 통해 클라이언트와 서버 간의 로그인 인증을 확인한다. -User-Agent : 유저가 모바일 클라이언트를 사용하는지, 데스크탑인지, 노트북인지 등의 에이전트 차이에 대한 정보를 알 수 있음. >HTTP Request Header 정보 얻기 -@RequestHeader(" ") : Attribute값에 문자열의 형식으로 헤더에서 원하는 ..

[Spring MVC] 04. DTO 클래스와 유효성 검증

DTO >Data Transfer Object 단어 뜻 그대로 데이터를 전송하는데 사용하는 객체를 의미하는 용어이다. 기존의 방식이 @RequestParam으로 클라이언트의 요청 데이터의 일부씩 받던 방식이었다면, DTO를 사용하는 방식은 클라이언트의 요청 데이터를 통째로 받아, 따로 생성해둔 객체에 저장하고 이를 제공 받는 형식이다. DTO용도로 생성한 객체는 클라이언트의 요청의 내용에 해당하는 변수들과 getter들가 필수적으로 존재한다. (setter는 사용자 편의에 따라서) DTO 객체에 클라이언트의 요청을 전달하기 위해서는 @RequsetBody 애너테이션을 사용하면 된다. DTO 유효성 검증 >Validation DTO 클래스의 유효성을 검증해야한다. 유효성 검증이란, 데이터가 필요로하는 올바..

Spring/Spring Boot 2022.10.22

[Spring MVC] 03. Controller

Spring Boot 기반 애플리케이션 >설정 조건 >애플리케이션 경계 및 요구 사항 우선은 간략하게만...! -버거 가게를 위한 애플리케이션 -멤버(고객, 점장) 정보 -버거 정보 -주문 정보 1. Entrypoint Class 애플리케이션의 시작점이 되는 클래스를 Entrypoint Class라고 한다. Spring Boot를 이용했다면, Entrypoint Class는 자동 생성된다. 위의 조건대로 설정한 상태에서는 아래 경로를 따른다. src -> main -> java -> com.example -> PracticingControllerApplication @SpringBootApplication -자동 구성 활성화 -애플리케이션 패키지 내의 @Component가 붙은 클래스를 검색(Scan)한..

Spring/Spring Boot 2022.10.22

[Spring MVC] 02. Spring MVC

Spring MVC >Spring MVC Spring MVC는 Spring의 여러 모듈 중 웹 계층을 담당하는 모듈 중 하나이다. 정확한 모듈명은 spring-webmvc인데 줄여서 Spring MVC라고 하는 것이다. 그리고 웹 프레임워크의 한 종류라는 이유로 Spring MVC 프레임워크라고도 부른다. Spring MVC는 Servlet API 기반으로 클라이언트의 요청을 처리한다.Servlet이란 클라이언트의 요청을 처리하기 위해 java 코드로 작성된 클래스 파일이고, 이를 담고있는 컨테이너를 Servlet Container라고 하며 기본적으로 Apache Tomcat이 사용된다. 쉽게 그냥 Sevlet이라는 웹 서버 프로그래밍을 하기 위한 사양을 갖춘 자바 코드를 기반으로 Spring MVC를 ..

Spring/Spring Boot 2022.10.22

[Spring MVC] 01.애플리케이션 개발 시작

앱 개발의 순서 >애플리케이션 경계 설정 앱을 개발하기 위해서는 해당 앱의 기능에 맞춰서 범위를 제한해야 하는 것이 먼저다. 이를 애플리케이션 경계를 설정한다고 표현한다. >요구 사항 수집 해당 앱이 어떤 기능을 필요로하고 고객에게 어떤 기능을 제공할 지에 대한 요구 사항을 수집해야한다. >패키지 구조 생성 애플리케이션의 경계를 설정하고 요구 사항 수집이 완료되면 이제 코드를 짜면서 기능을 구현하는 클래스들을 만들어내면 된다! 그런데 애플리케이션 하나에 생각보다 매우 많은 클래스들이 필요하다. 그래서 이를 정리하기 위해 클래스를 만들기 전 폴더들, 즉 패키지를 생성하여 정리할 준비를 하는 것이 좋다. 정해진 것은 아니지만 두 개의 대표적인 구조가 있다. (1)기능 기반 패키지 구조와 (2)계층 기반 패키..

Spring/Spring Boot 2022.10.22