Spring中xml配置优先于注解配置的示例

9

我在一本书中读到,XML配置比注解配置具有更高的优先级。

但是书中没有任何例子。

您能否给出一个例子呢?


请查看这篇帖子,我认为里面的一切都有解释。https://dev59.com/o2Up5IYBdhLWcg3wf3us - Angular University
2个回答

11

这是一个简单的例子,展示了基于xml的Spring配置和基于Java的Spring配置的混合使用。该示例中有5个文件:

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

首先在applicationContext文件中将helloBean bean注释掉并运行,你会发现helloBean bean是由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!!!");
   }
}

@Tom 可能还有更好的答案 :-). 这还不是结束。 - Gangnus
@Tom 没问题。祝你好运! - Gangnus

-1

当我们更喜欢使用XML文件的集中式、声明式配置时,就会使用基于XML的配置。当许多配置发生变化时,它可以为您提供清晰的想法,这些配置是如何连接的。与基于注释的配置相比,基于XML的配置更加松散耦合。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接