2017-01-27 41 views
0

我需要使用@DependsOn註解,並且我想要安全地獲取bean名稱。我目前的實現如下所述,但我更喜歡從ChildContextProvider.class.getSimpleName()或類似的實現中設置常量CLASS_NAME,以便輕鬆地找到類的用法並對重構安全。如何在spring中安全地從simpleClassName設置bean名稱

豆與不變:

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

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

豆與@DependsOn註釋:

@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

相關問題