2017-01-27 2 views
0

@DependsOn annotation을 사용해야하고 안전하게 bean 이름을 얻고 싶습니다. 내 현재 구현은 아래에 설명되어 있지만 클래스 사용법을 쉽게 찾고 리팩토링에 안전하려면 ChildContextProvider.class.getSimpleName() 또는 이와 유사한 구현에서 상수 CLASS_NAME을 설정하는 것이 좋습니다. 상수와SimpleClassName에서 Spring에서 bean 이름을 안전하게 설정하는 방법

콩 : @DependsOn 주석과

@Component(value = WebhookManager.CLASS_NAME) 
public class WebhookManager { 

    public static final String CLASS_NAME = "WebhookManager"; 
    ... 
} 

콩 :

@RestController 
@DependsOn({ChildContextProvider.CLASS_NAME, WebhookManager.CLASS_NAME}) 
public class PropertiesRESTController { 
    ... 
} 

나는이 같은 솔루션을 찾고 있지만,이 메시지와 함께 컴파일되지 않습니다 : CLASS_NAME이 일정해야합니다 :

@Component(value = WebhookManager.CLASS_NAME) 
public class WebhookManager { 

    public static final String CLASS_NAME = ChildContextProvider.class.getSimpleName(); 
    ... 
} 

답변

0

주석 값으로는 컴파일 타임 상수 만 사용할 수 있습니다. 귀하의 경우에 getSimpleName()의 결과가 런타임에서 계산되는 한 CLASS_NAME은 컴파일 타임 상수가 아닙니다.

상수 시간 상수에 대한 자세한 내용은 here을 참조하십시오.

+0

예 메시지에서이를 이해했지만 해결책을 묻습니다. 어쩌면 존재하지 않을 수도 있습니다. – Cyva

+1

제가 볼 수있는 유일한 해결책은 첫 번째 예를 사용하는 것입니다. 런타임에 계산되지 않는 상수를 사용해야합니다. String 컴파일 타임 상수를 사용하는 것이 왜 효과가 없습니까? –

+0

그것은 작동하지만 리팩토링 등 안전을 위해 더 좋은 것을 찾고있었습니다. 답장을 보내 주셔서 감사합니다. – Cyva

관련 문제