복붙노트

[SPRING] 스프링 프로토 타입 범위 - 사용 사례?

SPRING

스프링 프로토 타입 범위 - 사용 사례?

Spring Bean의 다양한 범위에 대한 명확한 이해가 있습니다. 그러나 엔터프라이즈 계층 프로젝트에서 bean의 프로토 타입 범위에 대한 사용 사례를 찾고 있습니다. 프로토 타입 범위 (요청 범위 아님)의 실제 사용 사례를 공유 할 수 있다면 좋을 것입니다.

해결법

  1. ==============================

    1.프로토 타입 빈을 사용하여 구성된 양식 요소 (예 : 전자 메일 주소의 이름을 확인하는 텍스트 상자)를 선언하고 웹 응용 프로그램에서 작성되는 모든 양식에 대해 "실제"인스턴스를 가져 왔습니다. 세부 사항은 중요하지 않으며 단지이 원칙을 요약하면 다음과 같습니다.

    프로토 타입 빈을 사용하여 구성된 양식 요소 (예 : 전자 메일 주소의 이름을 확인하는 텍스트 상자)를 선언하고 웹 응용 프로그램에서 작성되는 모든 양식에 대해 "실제"인스턴스를 가져 왔습니다. 세부 사항은 중요하지 않으며 단지이 원칙을 요약하면 다음과 같습니다.

  2. ==============================

    2.필자는 주로 스프링 조회 방법과 함께 프로토 타입을 사용했습니다. 내 응용 프로그램은 tcp 포트에서 들어오는 바이트를 디코딩해야하는 게임 서버입니다. 다음 bean 정의를 고려해보십시오.

    필자는 주로 스프링 조회 방법과 함께 프로토 타입을 사용했습니다. 내 응용 프로그램은 tcp 포트에서 들어오는 바이트를 디코딩해야하는 게임 서버입니다. 다음 bean 정의를 고려해보십시오.

    <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"에 의해 반환 된 bean은 내 응용 프로그램의 stateful bean이므로 범위 프로토 타입이어야합니다.

    참고 : 프로토콜은 함께 연결된 일련의 특정 디코더 및 인코더 집합에 불과합니다. "책임의 사슬"디자인 패턴.

  3. ==============================

    3.이전에 SpringSource에서 일했던 분으로서이 주제에 관해 개발자들과 이야기를 나눴습니다. 여기 내 걸릴 것입니다. 프로토 타입은 물건을 테스트하기에 적합합니다. 따라서 이름 프로토 타입이 아니라 createnew 또는 스프링 컨테이너에서 요청할 때마다 빈의 새 인스턴스를 만드는 것에 대한 설명입니다.

    이전에 SpringSource에서 일했던 분으로서이 주제에 관해 개발자들과 이야기를 나눴습니다. 여기 내 걸릴 것입니다. 프로토 타입은 물건을 테스트하기에 적합합니다. 따라서 이름 프로토 타입이 아니라 createnew 또는 스프링 컨테이너에서 요청할 때마다 빈의 새 인스턴스를 만드는 것에 대한 설명입니다.

    나는 또한 실제 사용 환경에서 프로토 타입이 의미가있는 다른 어떤 장소에서도 사용할 수 없다는 것을 내 사용에서 발견했다. 객체가 상태를 보유하고 있다면 일반적으로 Spring 빈이 아니어야합니다. 나는 모든 콩에서 Transaction, JPA, JMS 등의 기능을 추가해야하는 서비스, 저장소 및 단일 상태가 아닌 객체를 포함하는 모든 응용 프로그램에서 POJO가 사용할 수없는 엔터프라이즈 기능을 제공한다는 사실을 발견했습니다. 있다.

    상태를 유지하는 내 시스템의 객체는 내 Entities 및 View DTO 일 수도 있고, Spring Bean으로 이해가되지 않는 다른 것들 일 수도 있습니다. 따라서 프로덕션 환경의 응용 프로그램에는 단일 "프로토 타입"bean이 없습니다.

  4. ==============================

    4.우리는 애플리케이션이 각 쓰레드 / 요청에 대해 모델 클래스의 다른 인스턴스를 필요로하기 때문에 모델 클래스 (절전 모드에서 엔티티라고도 함)의 경우 프로토 타입 범위를 사용할 수 있습니다.

    우리는 애플리케이션이 각 쓰레드 / 요청에 대해 모델 클래스의 다른 인스턴스를 필요로하기 때문에 모델 클래스 (절전 모드에서 엔티티라고도 함)의 경우 프로토 타입 범위를 사용할 수 있습니다.

  5. ==============================

    5.프로토 타입 범위는 응용 프로그램 코드에 의해 빈에 대한 요청이있을 때마다 새 빈 인스턴스를 생성합니다.

    프로토 타입 범위는 응용 프로그램 코드에 의해 빈에 대한 요청이있을 때마다 새 빈 인스턴스를 생성합니다.

    파괴 빈 라이프 사이클 메소드는 프로토 타입 범위 Bean이 아니라 초기화 콜백 메소드 만 호출된다는 것을 알아야합니다. 따라서 개발자는 프로토 타입 범위의 빈 인스턴스와 거기에있는 모든 리소스를 정리해야합니다.

    프로토 타입 빈 범위의 Java 구성 예제 -

    @구성 요소

    @Scope ( "프로토 타입")

    목록 항목

    공용 클래스 BeanClass { }

  6. from https://stackoverflow.com/questions/9664810/spring-prototype-scope-use-cases by cc-by-sa and MIT license