2017-07-19 141 views
0

考慮下面的Java類的Spring XML配置相當於@order

@Order(12) 
@Component 
public class MyComponent { 

    //.... 

} 

什麼是在Spring XML配置等同?我找不到任何匹配的基於XML的配置@Order註釋:

<bean class="MyComponent" /> 
+0

已訂購https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/Ordered.html – Beri

+0

它似乎不是「有序的,我得到了:」org .springframework.beans.factory.xml.XmlBeanDefinitionStoreException:從類路徑資源[組分-context.xml中] XML文檔中的第60行是無效的;嵌套的異常是org.xml.sax.SAXParseException; LINENUMBER:60;得到columnnumber:88; CVC -complex-type.3.2.2:屬性'ordered'不允許出現在元素'bean'中。'' – schneida

+0

如果你不使用註釋,那麼你需要實現Ordered接口,但是它會使用spring api綁定你的類。 – Beri

回答

1

在春天,你有兩個選擇:

  • 註釋

  • 接口實現

在你的情況下,你將不得不採取第二種選擇。

你的類需要實現Ordered,但是這會將你的類與spring API綁定。當使用註解而不是類時,它是一樣的。

但是,如果您使用的是配置類而不是xml config,那麼您可以使用純java bean,並將所有Spring API保存在配置中。 例子:

@Bean(destroyMethod = "shutdown") 
    @Order(12) 
    public ScheduledExecutorService scheduledExecutorService() { 
     return Executors.newSingleThreadScheduledExecutor(); 
    } 

配置類給你從豆類分離的彈簧API(註釋)的選項。

+0

哈沒有替代的解決方案,這其實是一個不錯的主意,你們也說明我的具體問題相當不錯,在你的examp le:''ScheduledExecutorService''不在我的控制之下,所以我不能實現'Ordered''接口,也不能直接使用''Order''來註釋它。通過使用Java配置我仍然可以管理類在我的Spring上下文,並把它用,例如當''@ Autowired''名單注入訂購! – schneida