복붙노트

[SPRING] Spring의 JavaConfig 및 CustomScopeConfigurer 문제

SPRING

Spring의 JavaConfig 및 CustomScopeConfigurer 문제

나는 이상한 행동을보고 있는데, 여기 누군가가 문제에 대해 밝혀 줄 수 있기를 바랬다.

설정을 설명하여 시작하겠습니다. 첫째, 간단한 데이터 객체

public class Apple {
    private String name;
    public Apple withName(String name) {
        this.name = name;
        return this;
    }
    public String getName() {
        return name;
    }
}

그리고 테스트 클래스 ..

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={TestConfig.class})
public class AppleTest {
    @Autowired private Apple apples;

    @Test
    public void simpleTest() {
        System.out.println("OBJ: "+apples);
    }
}

구성은 다음과 같습니다.

@Configuration
public interface ConfigInterface {
    public Apple getApple();
}

구현 클래스로

@Configuration
@Import(AbstractTestConfig.class)
public class TestConfig implements ConfigInterface {
    public Apple getApple() {
        return new Apple().withName("Granny apples");
    }
}

설정 의존성으로 ...

@Configuration
public class AbstractTestConfig {
    @Autowired ConfigInterface conf;

    @Bean Apple myTestApple() {
        return conf.getApple();
    }
}

이 모든 것이 훌륭하게 작동합니다. 테스트를 실행하면 기대했던 결과를 볼 수 있습니다. 그런 다음 스패너를 바퀴에 던지고 AbstractTestConfig를 다음과 같이 수정합니다.

@Configuration
public class AbstractTestConfig {
    @Autowired ConfigInterface conf;

    @Bean Apple myTestApple() {
        return conf.getApple();
    }

    // NEW CODE
    @Bean CustomScopeConfigurer scopeConfigurer() {
        return new CustomScopeConfigurer();
    }
}

그리고 갑자기 @Autowired 객체 conf는 Apple bean을 생성해야 할 때 null입니다.

CustomScopeConfigurer 빈을 TestConfig 클래스로 옮기면 이상하다.

특정 스코프 또는 CustomScopeConfigurer 객체에 대해 알지 못하는 무언가가 있습니까?

해결법

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

    1.Spring @Bean에서 복사 됨 javadoc :

    Spring @Bean에서 복사 됨 javadoc :

    @Bean
     public static PropertyPlaceholderConfigurer ppc() {
         // instantiate, configure and return ppc ...
     }
    
  2. from https://stackoverflow.com/questions/14942304/springs-javaconfig-and-customscopeconfigurer-issue by cc-by-sa and MIT license