inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Trong thực tế! Tìm hiểu về TDD thông qua phát triển API đặt hàng sản phẩm Spring Boot

Giới thiệu giảng viên

POJO로 개발했는데 비즈니스 로직을 로깅해야 할 경우, 어떻게 해야 할까요?

337

serverstudymaster

14 câu hỏi đã được viết

0

강의 잘 듣고 있습니다!

 

강의 들으면서 문득 궁금한 점이 생겼는데요.

 

POJO로 개발했는데, 도메인 클래스 내의 비즈니스 로직을 로깅을 해야하는 경우가 실무에서 많을까요? 만약, 그런 경우가 있다면, 어떻게 해야 할지 궁금합니다. 공통된 패턴이 있다면, AOP를 사용해볼 수 있을 것 같은데, 그렇지 않은 경우, 어쩔 수 없이 도메인 모델이 로깅 프레임워크에 의존하지 않나 라는 생각이 들어서요. 로깅하고 싶은게 클래스의 메서드의 매개변수와 리턴값이 아닌 내부 로직 함수일 경우가 특히 궁금합니다. 혹시, 이런 경우는 실무에서 잘 발생하지 않아 알 필요가 없을까요?

tdd spring-boot pojo 소프트웨어-테스트 api

Câu trả lời 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

serverstudymaster님의 질문에 답변 드리겠습니다.

실무에서 POJO 도메인 클래스의 비즈니스 로직 내부를 로깅하는 경우는 상당히 많습니다. 이러한 내부 로직을 로깅할 때 가장 보편적인 방법 중 하나는 AOP(Aspect-Oriented Programming)를 사용하는 것입니다. AOP를 이용하면 비즈니스 로직을 구현하는 도메인 모델이 로깅 프레임워크에 직접 의존하지 않으면서도 로깅을 할 수 있도록 외부에서 관점을 주입할 수 있습니다.

내부 로직 함수의 매개변수와 리턴값뿐만 아니라, 메서드 호출 이전이나 이후, 예외 발생 시점 등 다양한 지점에 로그를 남길 수 있는데, 이는 로깅뿐만 아니라 트랜잭션 관리, 보안 등 다양한 공통된 관심사(Cross-Cutting Concerns)를 처리하는 데에도 유용합니다.

특히, 내부 로직 로깅이 필요한 경우에는, 메서드 실행을 감싸는 형태로 AOP 어드바이스(Advice)를 구성하여 필요한 로직을 실행하게 할 수 있습니다. 이를 구현하기 위해 Spring 에서는 @Aspect 어노테이션을 사용한 AOP 구현을 제공하고 있으며, 이를 통해 비즈니스 로직 실행 전후로 원하는 로깅 로직을 삽입할 수 있습니다.

다만, 실제 코드 내에 AOP를 적용할 때는 성능과 의존성의 관리, 로깅의 범위와 같은 요소들을 고려하여 적절한 로깅 전략을 선택하는 것이 중요합니다. 너무 많은 로그는 오히려 시스템의 성능을 저하시킬 수 있으니, 로깅의 범위와 수준을 사전에 충분히 고려한 후 적용하는 것이 좋습니다.

이 내용 외에도 관련 자세한 내용은 Spring 공식 문서에서 찾아보실 수 있습니다. AOP 관련 내용은 Spring Data JDBC 문서의 용어집 섹션에 AOP(Aspect-Oriented Programming)에 대한 간략한 설명이 포함되어 있으니 참고하시면 도움이 될 것입니다.

링크: https://docs.spring.io/spring-data/jdbc/docs/current/reference/html/#glossary

도움이 되셨기를 바랍니다. 추가로 궁금한 사항이 있으시면 언제든지 질문해주세요.

POJO에서 Spring Test로 넘어갈 때 누락(해결됨)

0

33

1

DatabaseCleanup 코드입니당 필요한 분들 쓰세요

0

125

1

이 방법이 TDD가 맞나요?

0

1109

2

generate -> add Dependency 이 메뉴가 안보이던데, 어떻게 보이게할까요?

0

355

1

실무 Asserta 사용여부가 궁금합니다.

0

455

1

테스트 코드 내의 지역변수를 final로 선언하는 이유가 궁금합니다.

0

530

1

통합테스트와 단위 테스트

0

964

1

의존성 및 설계? 부분 질문드립니다.

0

400

1

테스트 더블

0

394

1

리뷰반영 강의에서 shortcut ctrl + esc 는 어떻게 설정하나요?

0

483

1

POJO

0

597

1

POJO 상품 등록 기능 구현하기 강의 질문

1

543

1

steps 클래스를 사용하는 이유

0

340

1

랜덤 포트를 사용하는 이유

0

1104

1

상품등록 API 개발, JPA로 변환하기 에서

0

875

2

패키지 구조에 대해서 궁금합니다!

0

645

1

BeforeEach 를 하위 클래스에서 다시 사용하는것에 대해서 질문 드립니다.

1

563

1

ProductService의 updateProduct 로직 질문입니다.

0

556

2

TRUNCATE TABLE 시 AUTO_INCREMENT 컬럼 1로 초기화

2

3498

1

POJO로 개발 후 스프링으로 전환, 이후 JPA 전환하는 이유

4

1283

1

TestRestTemplate 대신에 RestAssured를 사용하는 이유가 있을까요?

0

1190

1

API 테스트로 전환하기

0

1019

1

코드 스타일에 대해서 질문드립니다.

2

1138

1

혹시 강의 중에 나오는 플러그인 좀 알 수 있을까요

0

1221

1