2017-07-19 143 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