작성
·
186
0
배민의 현재 구동중인 서비스의 실무 코드를 기준으로 질문드립니다.
Spring framework을 사용하지만,
DI패턴을 사용하지 않고, new 를 통해 직접 Instance를
생성하여, 해당 Instance 내부에서 private을 통한 멤버 변수를 제어하는 클래스가 어느 정도의 비중으로 있는지 궁금합니다.
DI 패턴은 주로 싱글톤으로 사용하기 때문에, 멤버변수를 클래스 내에 생성해서 다루지 않는걸로 알고 있습니다.
배민급의 비지니스 레벨을 구현할 때도, 클래스 내부의 멤버변수 사용없이 , 변수들을 DI패턴을 통한 각 메서드로 직접 넘기면서 모든 것을 구현해도 SOLID 원칙을 잘 지키는 코드를 만들 수 있는지가 궁금합니다.
답변 1
0
안녕하세요. hduk님
정확하게 어떤 질문인지 잘 이해가 되지 않습니다. 클래스 내부에 멤버변수가 있어야 하지 않을까요?
제가 이해한 것을 기반으로 답변을 드리자면 실무에서 스프링을 적극적으로 사용하면 어떤 회사이든 기본적으로 DI 원칙을 최대한 지키기 위해 노력한다고 이해하시면 됩니다.
추가로 죄송하지만 앞으로는 질문 안내에 있는 것 처럼 강의 학습에 관련된 질문을 올려주시길 부탁드립니다.
저도 마음으로는 도움을 드리고 싶지만, 하루에도 수 많은 분들이 질문을 올려주십니다. 그래서 강의 학습과 관련된 질문에 초점을 맞추는 것이 맞다 생각합니다. 다시한번 이해를 부탁드립니다.
감사합니다.
네 hduk님 생각보다 그런 케이스는 종종 있습니다.
어떤 객체가 있는데 스프링 빈으로 등록하지 않고 사용하는 경우들이 있습니다.
빈으로 등록하게 되면 스프링 컨테이너 전체에서 사용할 수 있게 되는데요. 특정 객체 안에서만 사용하는 경우 빈으로 등록하기는 좀 부담스러울 수 있습니다. 이런 경우에 직접 생성해서 주입하기도 합니다.
스프링을 공부하다 보면 스프링 코드 안에서도 이런 부분을 자연스럽게 학습할 수 있습니다.
감사합니다.
안녕하세요, 답변 감사합니다!
죄송합니다. 추후에는 강의와 관련된 질문을 올리도록 하겠습니다!
다만, 이번 질문이 명확하게 전달되지 않은거 같아 다시한번 정리해서 질문드립니다.ㅠㅠ
DI패턴을 사용해서 객체를 주입할 때, @Bean 객체를 주입하는걸로 알고 있습니다.
제가 궁금했던건, 스프링 프레임워크를 사용하는데도 불구하고,
@Bean객체가 아니라, 직접 new Instance()를 생성해서 주입하는 경우가 있는지,
있다면 예를 들어, 어떤 상황에서 이런 경우가 생기는지가 궁금합니다.