스프링 프로토타입 범위 - 사용 사례?
나는 봄콩의 다양한 범위에 대해 잘 알고 있습니다.하지만 엔터프라이즈 티어 프로젝트에서 빈의 프로토타입 범위에 대한 몇 가지 활용 사례를 찾고 있습니다.요청 범위가 아닌 프로토타입 범위의 실제 사용 사례를 공유해 주시면 좋겠습니다.
이전에 SpringSource에서 일했던 사람으로서 이 주제에 대해 개발자들과 이야기를 나눈 적이 있습니다.제 의견은 이렇습니다.프로토타입은 제품을 테스트하는 데 유용하므로 프로토타입이라는 이름을 사용할 수 있으며, Spring 컨테이너에서 매번 요청할 때마다 새로운 콩 인스턴스를 생성하는 새로운 또는 더 많은 설명을 생성할 수 없습니다.
또한 수년간 사용해 온 결과, 실제 프로덕션 애플리케이션에서 프로토타입을 사용할 수 있는 다른 장소는 전혀 생각할 수 없었습니다.개체가 상태를 유지하는 경우 일반적으로 스프링 빈이 아니어야 합니다.지금까지 작업한 모든 응용 프로그램에서 모든 빈은 서비스, 저장소 및 Singleton non state holding 개체로 POJO에는 없는 엔터프라이즈 기능을 제공하는 Transactionality, JPA, JMS 등의 기능을 추가해야 합니다.
시스템에서 상태를 유지하는 개체는 개체 및 보기 DTO일 수도 있습니다. 또는 Spring Bean이 되기에는 전혀 의미가 없는 다른 개체일 수도 있습니다.따라서 생산 중인 제 애플리케이션에는 "원형" 콩이 단 한 개도 없었습니다.
프로토타입 원두를 사용하여 구성된 폼 요소(예를 들어 이름, 이메일 주소를 확인하도록 구성된 텍스트 상자)를 선언하고 웹 앱에서 생성되는 모든 폼에 대해 해당 요소의 "살아있는" 인스턴스를 얻었습니다.세부사항은 중요한 것이 아니라 원칙적인 것일 뿐입니다. 이렇게 요약하면 다음과 같습니다.
- 구성 매개 변수가 많은 클래스가 있습니다.
- 미리 정의된 구성 집합(fancy1, fancy2, stc)을 사용하여 인스턴스를 생성해야 합니다.
- 생각해보세요.
applicationContext.getBean("myBeanConfiguredFancy1")
xml에서 미리 설정된 대로 인스턴스를 생성하는 일종의 공장 방식으로
시제품은 주로 스프링과 함께 사용해왔습니다.lookup-method
. 저의 어플리케이션은 tcp 포트에서 들어오는 바이트를 해독해야 하는 게임 서버입니다.다음과 같은 콩 정의를 고려합니다.
<bean id="channelBufferProtocol" class="org.menacheri.protocols.impl.ChannelBufferProtocol">
<lookup-method name="createLengthBasedFrameDecoder" bean="lengthFieldBasedFrameDecoder"/>
<property name="eventDecoder" ref="eventDecoder"></property>
<property name="lengthFieldPrepender" ref="lengthFieldPrepender"></property>
<property name="eventEncoder" ref="eventEncoder"></property>
</bean>
프로토콜 구현 클래스 안에서 프레임 디코더를 만드는 다음 코드를 가지고 있습니다.pipeline.addLast("lengthDecoder", createLengthBasedFrameDecoder());
이 메서드가 호출되면 spring이 새 프레임 디코더 인스턴스를 만들고 이를 반환합니다.
콩이 돌아 왔습니다.bean="lengthFieldBasedFrameDecoder"
범위가 되어야 함prototype
, 제 앱에서 상태 좋은 콩이기 때문에.
참고: 프로토콜은 서로 연결된 디코더와 인코더의 특정 집합에 불과합니다."책임의 사슬" 디자인 패턴.
응용 프로그램에서 각 스레드/요청에 대해 서로 다른 모델 클래스 인스턴스를 필요로 하기 때문에 모델 클래스의 경우(동면 상태의 엔티티라고도 함) 프로토타입 스코프를 사용할 수 있습니다.
언급URL : https://stackoverflow.com/questions/9664810/spring-prototype-scope-use-cases
'it-source' 카테고리의 다른 글
파워셸:파일이 잠겨 있는지 확인 (0) | 2023.11.02 |
---|---|
워드프레스 웹사이트에서 json 응답을 얻는 방법 (0) | 2023.11.02 |
유연한 어레이 멤버로 인해 정의되지 않은 동작이 발생할 수 있습니까? (0) | 2023.11.02 |
반환된 변수의 기억을 자유롭게 하는 적절한 방법 (0) | 2023.11.02 |
어린이 중 한 명이 포커스를 받을 경우 블러 이벤트가 발생하지 않도록 합니다. (0) | 2023.11.02 |