2014-02-17 97 views
9

在我讀過的書中,XML配置的優先級高於註釋配置。xml配置優先於Spring中註解配置的示例

但沒有任何它的例子。

您能舉一個例子嗎?

+0

檢查這個帖子,我認爲一切都在那裏http://stackoverflow.com/questions/15233766/what-is-the-precedence-of-spring-beans-definitions –

回答

10

下面是一個簡單的例子,展示了基於xml的Spring配置和基於Java的Spring配置的組合。有5個文件中的示例:

Main.java 
AppConfig.java 
applicationContext.xml 
HelloWorld.java 
HelloUniverse.java 

嘗試使用helloBean豆ApplicationContext中的文件註釋掉首先運行它,你會發現,helloBean豆是從了AppConfig配置類實例化。然後使用applicationContext.xml文件中未註釋的helloBean bean運行它,您會注意到xml定義的bean優先於AppConfig類中定義的bean。


Main.java

package my.test; 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.annotation.AnnotationConfigApplicationContext; 

public class Main { 

    public static void main(String[] args) { 
     ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class); 
     ctx.getBean("helloBean"); 
    } 
} 


AppConfig.java

package my.test; 
import org.springframework.context.annotation.*; 

@ImportResource({"my/test/applicationContext.xml"}) 
public class AppConfig { 

    @Bean(name="helloBean") 
    public Object hello() { 
     return new HelloWorld(); 
    } 
} 


的applicationContext.xml

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 

    <bean id="helloBean" class="my.test.HelloUniverse"/> 

</beans> 


HelloUniverse.java

package my.test; 

public class HelloUniverse { 

    public HelloUniverse() { 
     System.out.println("Hello Universe!!!"); 
    } 
} 


HelloWorld.java

package my.test; 

public class HelloWorld { 

    public HelloWorld() { 
     System.out.println("Hello World!!!"); 
    } 
} 
+0

謝謝 - 這是真的工程 – gstackoverflow

+0

@Tom可能還有更好的答案:-)。它還沒有結束。 – Gangnus

+0

@Tom沒關係。祝你好運! – Gangnus

-1

當我們寧願集中,聲明的XML文件配置的基於XML配置使用。當許多配置發生變化時。它給你一個清晰的概念如何連接這些配置。基於XML比基於註解更鬆散地解耦。