inflearn logo
강의

講義

知識共有

本当! Spring Bootの商品 - 注文API開発で学ぶTDD

講師紹介

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

337

serverstudymaster

投稿した質問数 14

0

강의 잘 듣고 있습니다!

 

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

 

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

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

回答 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

562

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