인프런 커뮤니티 질문&답변

김어진님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

조회 질문입니다.

해결된 질문

22.07.19 16:20 작성

·

192

2

안녕하세요 강사님 강의를 듣고 혼자 조회를 만들고 테스트를 진행하다가 

궁금한 것이 생겨 질문을 남기게 되었습니다. 

 

A, B, C 라는 서비스 클래스가 있고 A, B 클래스에 만든 비즈니스 로직을 C 서비스 클래스에서

사용하고 싶어 C 서비스 클래스에서 A,B를 참조해서 사용할 경우 어떻게 처리하는 것이

가장 좋은 것인 지 궁금합니다.  

 

읽어주셔서 감사합니다. 

답변 3

2

David님의 프로필 이미지

2022. 07. 19. 16:25

안녕하세요. 김어진님, 공식 서포터즈 David입니다.

다른 서비스를 주입 받아 사용하시면 됩니다.

다만, 순환참조가 생기지 않도록 주의해주세요.

감사합니다.

0

David님의 프로필 이미지

2022. 07. 20. 23:19

"순환참조를 방지하기 위해 컨트롤러단에서 처리하라는 글을 보았습니다. "

여기서 말씀하신 글이 어떤 글인지 알려주실 수 있으실까요??

 

그리고 순환참조를 끊는 방법은 여러가지가 있으니 아래 글을 참고해주세요.

https://www.baeldung.com/circular-dependencies-in-spring

 

OSIV가 꺼져있는 상태에서는 Controller 레이어에서는 영속성 컨텍스트가 유지되지 않으므로 엔티티는 준영속 상태가 됩니다.

0

김어진님의 프로필 이미지
김어진
질문자

2022. 07. 19. 16:39

답변 감사합니다.

 

순환참조를 방지하기 위해 컨트롤러단에서 처리하라는 글을 보았습니다. 

C 서비스 클래스에 해당하는 C 컨트롤러에서 A,B 서비스 클래스를 호출한 뒤, 비즈니스 로직을 

처리하고 나온 반환 값을 C 서비스 클래스에서 보낸 후 사용하는게 괜찮나요?

이렇게 되면 A,B에서 나온 값이 영속성 컨텍스트에서 관리가 되는 것인지 추가로 궁금하여 답글을 

다시 달게 되었습니다. (컨트롤러에서 호출한 것을 가정합니다.)

 

읽어봐주셔서 감사합니다. :)