본문 바로가기

개발137

Actuator Spring Boot Actuator 스프링 부트의 다양한 설정과 지표를 모니터링 할 수 있는 도구 빈 등록, 연관관계 환경변수, 프로퍼티 등록 엔드포인트 로깅 정상 동작 확인(헬스 체크) 캐시 동작 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-actuator' application.properties 추가 management.endpoints.web.exposure.include=* // 엔드 포인트 노출 2024. 2. 24.
Devtool Spring Boot Devtools 스프링 부트 모듈들의 세부 설정을 개발에 적합한 형태로 자동으로 바꿔준다(캐시 끄기 등) Automatic restart 자바 코드가 바뀌면 자동으로 애플리케이션을 재시작 Restart vs. Cold start • devtools classloader: base classloader + restart classloader • restart (triggered by devtools): restart classloader 만 갱신함 (개발에서 자주 바뀌는 부분) • cold start (부트 직접 재시작): 전체 classloader 갱신 • Restart triggering condition: classpath 안의 소스코드가 업데이트 되었을 때 • build pro.. 2024. 2. 24.
타임리프(thymeleaf) 타임리프(thymeleaf) HTML5 웹 표준을 준수하는 템플릿 전체적인 문법이 HTML5 마크업 표준을 최대한 해치지 않게 설계 Decoupled logic : 템플릿 문법을 아예 템플릿에서 분리 가능 템플릿 엔진이 작동하지 않아도 렌더링 되는 정적 목업 페이지 순수한 마크업으로만 구성 템플릿 문법 적용 th: tag data-th attribute decoupled logic • Variable Expressions: ${...} • Selection Variable Expressions: *{...} • Message Expressions: #{...} • Link URL Expressions: @{...} • Fragment Expressions: ~{...} Thymeleaf 문법 ${name.. 2024. 2. 20.
비즈니스 로직 테스트 비즈니스 로직 테스트 방법 unit test, solitary test -> 필요로 하는 것들만 사용하거나 mocking, slice test 컨트롤러 입출력 확인 에러 검증 비즈니스 로직의 동작 integration test, sociable test -> @SpringBootTest 인증 + api 호출 api 호출 -> 비즈니스 -> 데이터 접근 -> 응 2024. 2. 20.
spring boot properties logging debug trace logging.level.pakage 명 : 로그 단계 설정 logging.level.com.example.Get_In_Line=debug # api 호출 과정을 로그로 관찰 logging.level.org.springframework.web=debug config spring.config.activate.on-profile 그룹프로파일(spring.profiles.group.{group-name})을 선언하면 내가 의도했던 대로 속성값을 덮어쓴다. spring.config.import Spring Boot의 외부에 있는 프로퍼티(Property) 컨피그 파일을 적용 main spring.main.banner-mode banner 표시 설정 spring.main.laz.. 2024. 2. 20.
오류 처리 비즈니스 로직에서 발생 할 수 있는 문제들에 대한 알맞는 에러 처리 방법 에러 코드 테스트 class ErrorCodeTest { // 매개변수화된 테스트를 정의합니다. @ParameterizedTest(name = "[{index}] {0}의 HttpStatus는 {1}이다.") // @MethodSource를 사용하여 테스트 메서드의 인자를 제공하는 메서드를 지정합니다. @MethodSource // 테스트의 표시 이름을 설정합니다. @DisplayName("예외를 받으면, 예외 메시지가 포함된 메시지 출력") void givenExceptionWithMessage(ErrorCode sut, String expected) { // 예외 메시지를 확인하는 테스트입니다. // Given // 예외 객체를.. 2024. 2. 19.
Validation Validation 사용자 입력값에 있을지 모르는 오류를 처리하기 위해서 모든 입력단 앞에 방어 코드가 추가된다. 방어 코드는 복잡하고 반복적 -> 대표적 boilerplate code 애노테이션 기반으로 데이터 검증을 돕는 JSR-303, JSR-380 표준이 도입됨 검증 구현과 비즈니스 로직을 분리하고, 비즈니스 로직에 더 집중 가능하다. 코드가 간결해지고 가독성이 향상된다. Spring에서는 Validation 의존성 추가해서 사용 @Validated + 메소드 파라미터 검증 메소드 파라미터에 validation annotation을 직접 사용해서 검증하는 방법 클래스에 @Validated 붙여서 사용 발생한 예외를 ConstraintViolationException으로 던진다. 직접 처리해야하는 .. 2024. 2. 19.
MVC 패턴(3) - 비즈니스 로직 구현 @Service 비즈니스 로직을 담당하는 컴포넌트 도메인 모델(데이터)과 컨트롤러 사이에 위치 구현 방식 인터페이스 + 클래스 인터페이스를 요구사항에 따른 기능 문서(javadoc)로 작성 같은 기능을 하는 다양한 구현체를 작성할 니즈가 예상될 때 적합하다 클래스 인터페이스를 추가로 작성하는 수고를 덜 수 있다. 컨트롤러 레이어와의 결합도가 증가한다. 2. 클래스 방식으로 EventService 구현 // EventService @RequiredArgsConstructor @Service // EventService 인터페이스 구현체 public class EventService{ private final EventRepository eventRepository; public List getEvents(.. 2024. 2. 19.