尽管Spring长期以来确实与XML有着关联,但现在需要明确的是,XML不再是配置Spring的唯一可选方案。Spring现在有了强大的自动化配置和基于Java的配置,XML不应该再是你的第一选择了。不过,鉴于已经存在那么多基于XML的Spring配置,所以理解如何在Spring中使用XML还是很重要的。但是,我希望本节的内容只是用来帮助你维护已有的XML配置,在完成新的Spring工作时,希望你会使用自动化配置和JavaConfig。

1.1创建XML配置规范

在使用XML为Spring装配bean之前,你需要创建一个新的配置规范。在使用JavaConfig的时候,这意味着要创建一个带有@Configuration注解的类,而在XML配置中,这意味着要创建一个XML文件,并且要以<beans>元素为根。

Spring实战之通过XML装配bean

 

  很容易就能看出来,这个基本的XML配置已经比同等功能的JavaConfig类复杂得多了。作为起步,在JavaConfig中所需要的只是@Configuration,但在使用XML时,需要在配置文件的顶部声明多个XML模式(XSD)文件,这些文件定义了配置Spring的XML元素。借助Spring Tool Suite创建XML配置文件创建和管理Spring XML配置文件的一种简便方式是使用Spring ToolSuite(https://spring.io/tools/sts)。在Spring Tool Suite的菜单中,选择File>New>Spring Bean Configuration File,能够创建SpringXML配置文件,并且可以选择可用的配置命名空间。

1.2声明一个简单的<bean>

 

要在基于XML的Spring配置中声明一个bean,我们要使用spring-beans模式中的另外一个元素:<bean>。<bean>元素类似于JavaConfig中的@Bean注解。我们可以按照如下的方式声明CompactDiscbean:

Spring实战之通过XML装配bean

  这里声明了一个很简单的bean,创建这个bean的类通过class属性来指定的,并且要使用全限定的类名。因为没有明确给定ID,所以这个bean将会根据全限定类名来进行命名。在本例中,bean的ID将会是“soundsystem.SgtPeppers#0”。其中,“#0”是一个计数的形是借助id属性,为每个bean设置一个你自己选择的名字:

Spring实战之通过XML装配bean

1.3借助构造器注入初始化bean

但是,在XML中声明DI时,会有多种可选的配置方案和风格。具体到

构造器注入,有两种基本的配置方案可供选择:

Spring实战之通过XML装配bean

 

明CDPlayer并通过ID引用SgtPeppers:

Spring实战之通过XML装配bean

为compactDisc的bean引用传递到CDPlayer的构造器中。

方式。要使用它的话,必须要在XML的顶部声明其模式,如下所示

Spring实战之通过XML装配bean

在c-命名空间和模式声明之后,我们就可以使用它来声明构造器参数
了,如下所示:

Spring实战之通过XML装配bean

 

CompactDisc的一个新实现,如下所示:

Spring实战之通过XML装配bean

样,它可以设置成任意你想要的艺术家和唱片名。现在,我们可以将

已有的SgtPeppers替换为这个类:

Spring实战之通过XML装配bean

案是引用构造器参数的名字:

Spring实战之通过XML装配bean

实现,c-命名空间却无法做到的。接下来,让我们看一下如何将集合

装配到构造器参数中。

 

 

 

Spring实战之通过XML装配bean

当list中元素是引用类型时

Spring实战之通过XML装配bean

1.4设置属性

Spring XML实现属性注入。假设属性注入的CDPlayer如下所示:

 

Spring实战之通过XML装配bean

 

Spring实战之通过XML装配bean

 法)。如果你现在运行测试的话,它应该就能通过了。

XML文件中与其他的命名空间一起对其进行声明:

Spring实战之通过XML装配bean

我们可以使用p-命名空间,按照以下的方式装配compactDisc属性

Spring实战之通过XML装配bean

不过,BlankDisc这次完全通过属性
注入进行配置,而不是构造器注入。新的BlankDisc类如下所示:

Spring实战之通过XML装配bean

Spring实战之通过XML装配bean

 

相关文章: