본문 바로가기

Spring-Java59

예제로 알아보는 도커(Docker) 세 줄 요약- 도커는 리눅스 가상환경 기반의 컨테이너를 통해 서버를 구성하는 요소들에 대한 실행환경을 독립적으로 구성한다.- 도커 허브(클라우드)는 각 요소들을 리눅스 컴퓨터에 설치된 모습인 이미지의 형태로 제공한다.- 도커파일과 compose 파일을 통해 서버환경을 보다 쉽게 개발환경과 동일하게 구성할 수 있다.  Doker? Docker도커는 리눅스(Linux) 가상환경 형태에서 돌아가는 '컨테이너(Container)'를 통해 개발의 편의성을 제공합니다.서버를 구성하는 요소들(언어, DB, 웹서버 등)이 '도커 허브(Docker Hub)'에서 '이미지(Image)' 형태로 제공됩니다.  → 여기서 이미지란 리눅스 컴퓨터의 특정 상태를 캡처해서 박제해둔 것을 의미합니다.  → 예를 들어 node 이미지.. 2024. 4. 29.
전역 예외 핸들러와 예외 처리 전략 (@ControllerAdvice, @ExceptionHandler) 세 줄 요약- 전역 예외 핸들러를 통해 예외 처리 코드에 대한 유지 보수성 및 기존 코드에 대한 가독성을 높일 수 있다.- @ControllerAdvice 및 @ExeptionHandler 어노테이션을 통해 동일한 예외를 전역적으로 처리할 수 있다.- 사용자 예외를 정의할 땐 RuntimeException을 상속받아 Unchecked Exception으로 만든다.  전역 예외 핸들러 지난 포스팅에서 500 Internal Server Error를 400 Bad Request로 변환해야 한다고 했습니다.전역 예외 핸들러를 이용하면 응답 변환과 더불어 예외 발생시 클라이언트에게 유용한 정보를 함께 제공할 수 있습니다. 전역 예외 핸들러예외 처리에 관한 내용을 모아둔 클래스를 의미합니다.전역 예외 핸들러를 사.. 2024. 4. 26.
@Valid, @Validated 세 줄 요약- 도메인 지식은 도메인 클래스 내부에서 머물러야 한다.- 컨트롤러에서 매개변수에 대한 유효성 검사는 @Valid를 통해 진행한다.- 클래스에 @Validated를 선언하면 컨트롤러 외에도 모든 계층에서 유효성 검사를 진행할 수 있다.  Bean Validation Validation(유효성 검사)데이터가 스펙(요구사항)에 맞는지 확인하는 작업을 의미합니다.  Bean ValidationJSR(Java Specification Requests)-303(or 308) 이라는 스펙을 사용하여 유효성을 검사하는 행위를 의미합니다.해당 스펙을 만족하는 대표적인 구현체로 'Hibernate Validator'가 있습니다.스프링에선 'Spring Boot Starter Validation'을 제공하며, .. 2024. 4. 25.
super, super() 세 줄 요약- super : 부모 클래스로부터 상속받은 필드나 메소드를 사용하기 위한 참조변수- super() : 부모 클래스로부터 상속받은 필드의 값을 초기화 해주는 메소드(= 생성자 역할)- super() 메소드는 자동으로 추가되나, 부모 클래스에 매개변수를 갖는 생성자가 있는 경우 기본 생성자를 추가해줘야 함  super? supersuper 키워드는 부모 클래스로부터 상속받은 필드나 메소드를 자식 클래스에서 참조하는데 사용하는 참조 변수입니다.  this와 super인스턴스 필드와 지역 변수의 이름이 같을 때 this 키워드로 인스턴스 필드임을 구분했습니다.class Parent { int a; public Parent(int a) { .. 2024. 4. 24.
Optional 클래스 Optional? Optional Integer 혹은 Double과 같이 객체 T를 포장(wrap)해주는 래퍼 클래스입니다. 자바의 NullPointException(NPE)을 조금 더 세련되게 처리할 수 있도록 도와줍니다. 객체 생성 of() 메소드나 ofNullable() 메소드를 통해 객체를 생성합니다. 타입에는 / int / long / double 등이 있습니다. Optional : 객체 T OptionalInt : int OptionalLong : long OptionalDouble : double of( ) null이 아닌 명시된 값을 가지는 Optional 객체를 반환합니다. 만약 of() 메소드를 통해 생성된 Optionla 객체에 null이 저장되면 NPE가 발생합니다. ofNullab.. 2024. 4. 5.
스트림(Stream)_최종 처리 기능 세 줄 요약 - 최종 처리 기능을 담당하는 메소드를 체이닝 패턴 마지막에 위치시켜 내부 반복을 종료한다. - 집계 처리 메소드 중 Optional 타입을 리턴하는 메소드는 get() 메소드를 통해 그 값을 얻는다. - collect() 메소드를 사용해서 중간 처리를 거친 요소를 컬렉션에 담을 수 있다. 루핑 스트림에서 요소를 하나씩 반복해서 가져와 처리하는 것을 말합니다. 매개타입은 함수형 인터페이스인 Consumer이며, 해당 인터페이스에는 매개값을 처리하는 accept() 메소드가 있습니다. forEach( ) / peek( ) 둘 다 요소를 하나씩 반복해서 가져오는 기능을 수행합니다. 다만, peek() 메소드는 최종 처리 기능이 아니므로 스트림 메소드 체이닝 패턴에서 마지막에 위치할 수 없습니다... 2024. 4. 5.