복붙노트

[SPRING] Spring JavaConfig, Bean의 커스텀 스코프 및 주석

SPRING

Spring JavaConfig, Bean의 커스텀 스코프 및 주석

해결해야 할 문제가 있습니다. 1) 우리 프로젝트는 Spring JavaConfig 접근 방식을 사용하므로 XML 파일은 없습니다. 2) 사용자 지정 범위를 만들어야합니다 .xml의 예는 다음과 같습니다.

<bean class="org.springframework.beans.factory.config.CustomScopeConfigurer">
<property name="scopes">
    <map>
        <entry key="workflow">
            <bean
                class="com.amazonaws.services.simpleworkflow.flow.spring.WorkflowScope" />
        </entry>
    </map>
</property>

JavaConfig를 사용하여 다음과 같이 보입니다.

    @Bean
public CustomScopeConfigurer customScope () {
    CustomScopeConfigurer configurer = new CustomScopeConfigurer ();
    Map<String, Object> workflowScope = new HashMap<String, Object>();
    workflowScope.put("workflow", new WorkflowScope ());
    configurer.setScopes(workflowScope);

    return configurer;
}

내 가정이 틀렸다면 나를 바로 잡으십시오.

3) 클래스에 @Component (scope = "workflow")로 주석을 달아야합니다. 다시 xml 구성은 다음과 같습니다.

<bean id="activitiesClient" class="aws.flow.sample.MyActivitiesClientImpl" scope="workflow"/>

그래서 기본적으로 질문은-@Component (scope = "workflow")를 사용하는 것으로 가정합니까? 아니면 다른 방법으로 예상됩니까?

감사

해결법

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

    1.주석 @Scope를 사용해야합니다. 이처럼 :

    주석 @Scope를 사용해야합니다. 이처럼 :

    @Scope("workflow")
    

    사용자 지정 범위 한정자를 만들 수도 있습니다.

    @Qualifier
    @Scope("workflow")
    @Target({ ElementType.TYPE, ElementType.METHOD })
    @Retention(RetentionPolicy.RUNTIME)
    public @interface WorkflowScoped {
    }
    

    이 방법으로 사용하십시오 :

    @Component
    @WorkflowScoped 
    class SomeBean
    
  2. from https://stackoverflow.com/questions/15435860/spring-javaconfig-beans-custom-scopes-and-annotations by cc-by-sa and MIT license