2017-12-01 10 views
0

주석을 사용하여 XML없이 설정 한 커다란 Spring 애플리케이션이 있습니다. 이 응용 프로그램을 약간 변경하고 거의 동일한 코드를 사용해야하는 별도의 프로젝트를 만들었습니다. 그러나이 별도의 프로젝트에서 Togglz는 내가 설정 한 TogglzConfig 파일 대신 기본 설정을 사용하고있는 것으로 보입니다.Spring 애플 리케이션이 실행될 때, TogglzConfig 파일을 사용하고 있지 않습니다.

처음으로 뭔가 잘못되었다는 표시는 Togglz 콘솔에 액세스 할 수없는 경우였습니다. Toggrez 사이트에 표시된대로 다른 사람이 사용할 수 있도록 설정되어 있음에도 불구하고 403 Forbidden 오류가 발생합니다. 그런 다음 몇 가지 테스트를 수행하고 목록을 보려고했는데 FeatureContext.getFeatureManager(). getFeatures()를 호출하면 필자의 Feature 클래스에도 여러 기능이 포함되어 있어도 목록이 비어 있습니다. 이것이 내가 어떤 종류의 불이행을 사용하고 있다고 생각하는 이유입니다.

TogglzConfiguration.java

public enum Features implements Feature { 

    FEATURE1, 

    FEATURE2, 

    FEATURE3, 

    FEATURE4, 

    FEATURE5; 

    public boolean isActive() { 
    return FeatureContext.getFeatureManager().isActive(this); 
    } 
} 

TogglzConfiguration.java

@Component 
public class TogglzConfiguration implements TogglzConfig { 

    public Class<? extends Feature> getFeatureClass() { 
    return Features.class; 
    } 

    public StateRepository getStateRepository() { 
    File properties = [internal call to property file]; 
    try { 
     return new FileBasedStateRepository(properties); 
    } catch (Exception e) { 
     throw new TogglzConfigException("Error getting Togglz configuration from " + properties + ".", e); 
    } 
    } 

    @Override 
    public UserProvider getUserProvider() { 
    return new UserProvider() { 
     @Override 
     public FeatureUser getCurrentUser() { 
     return new SimpleFeatureUser("admin", true); 
     } 
    }; 
    } 
} 

SpringConfiguration.java는

@EnableTransactionManagement 
@Configuration 
@ComponentScan(basePackages = { "root package for the entire project" }, excludeFilters = 
    @ComponentScan.Filter(type=FilterType.ANNOTATION, value=Controller.class)) 
public class SpringConfiguration { 

    @Bean 
    public TransformerFactory transformerFactory() { 
     return TransformerFactory.newInstance(); 
    } 

    @Bean 
    public DocumentBuilderFactory documentBuilderfactory() { 
     return DocumentBuilderFactory.newInstance(); 
    } 

    @Bean 
    public RestTemplate restTemplate() { 
     return new RestTemplate(); 
    } 
} 

내 프로젝트는 @Component 주석 설정 다른 콩의 무리를 발견한다. 문제가이 구성 요소가 전혀 선택되지 않은 경우 또는 Toggr 단순히 일부 이유로 사용하지 않는 경우 알 수 없습니다. 필자는 FeatureContext.getFeaturemanager()에 의해 반환 된 FeatureManager의 이름을 인쇄 해 보았습니다. 그리고 이것은 FallbackTestFeatureManager입니다. 그래서 이것은 내 구성을 전혀 사용하지 않는다는 나의 의구심을 확인하는 것 같습니다.

누구나 확인할 수있는 아이디어가 있습니까? 저는 아이디어가 부족합니다. 특히 이것은 지금 내 컴퓨터에서 거의 동일한 IntelliJ 프로젝트로 작업하고 있습니다. Togglz 설정이나 Spring 설정에 대해 다른 점을 발견 할 수 없습니다. 귀하의 도움에 미리 감사드립니다.

답변

0

필자는 마침내 전구를 켜고이 문제를 해결했습니다. 다른 사람이 비슷한 문제가있는 경우 내 실수는 Togglz 테스트 및 JUnit 종속성을 프로젝트에 추가했지만 테스트 범위로 제한하지 않는 것 같습니다. 나는 그 사이트의 일부를 간과했다.

<!-- Togglz testing support --> 
<dependency> 
    <groupId>org.togglz</groupId> 
    <artifactId>togglz-testing</artifactId> 
    <version>2.5.0.Final</version> 
    <scope>test</scope> 
</dependency> 

이 범위가 없으면 기본 테스트 구성으로 만든 Togglz 구성이이 범위를 무시하고 이것이 내 문제의 원인이라고 생각합니다.