새로운 키워드 (Spring IoC 컨테이너에서 수행되는 모든 의존성 주입, 라이프 사이클 콜백 등)를 통해 직접 인스턴스화하는 것보다 프로토 타입 bean을 확보하는 데 더 많은 오버 헤드가 발생합니다. 단일 인스턴스화에서는 중요하지 않겠지 만 루프에서이 작업을 수행하면 성능 문제가 발생할 수 있습니다.
그러나 싱글 톤 bean (일반적으로 서비스) 또는 자원 (예 : DataSource)이 필요한 경우에는 프로토 타입 bean을 사용하는 것이 좋습니다. 추가 종속성은 자동으로 유선됩니다.
성능 고려 사항 외에도 선택에 따라 디자인이 달라질 수 있습니다. 서비스 계층을 가진 "전통적"아키텍처와 도메인 객체가 속한 데이터 액세스 객체를 따를 경우 Spring의 관점에서는 일반적으로 상태가 저장되지 않습니다. 귀하의 서비스 및 데이터 액세스 객체는 POJO의 도메인 객체를 사용하는 싱글 톤입니다. 여기서 프로토 타입 빈은 거의 필요하지 않습니다.
반면에 객체에 stateless factory (인스턴스를 가져 오거나 만들 수 있도록 허용)가있는 객체 지향 접근법을 따르고 객체가 자체적으로 지속될 수 있다면 ('save' 메서드)를 사용하면 거의 모든 도메인 객체가 프로토 타입 빈이 될 수 있습니다.
거의 모든 결정에서와 마찬가지로 트레이드 오프와 아무런 정답도 없을 것입니다.
당신은 어느 것이 더 나은가요? 질문이 조금 불분명하다. –
* 일부 상황에서는 도메인 코드에 injection *이 필요합니다. 내가 너라면이 상황을 없애려고 노력할거야. –
모든 도메인 클래스의 프로토 타입 빈을 만들 수 있는지 확인하려고합니다. – user373201