xml如何与java连接_自动装配、JavaConfig、XML 三种方案之间,怎么导入和混合配置?...

在 Spring 中,这些配置方案都不是互斥的。完全可以将 JavaConfig 的组件扫描和自动装配/或 XML 配置混合在一起。

Q:如何在 JavaConfig 中引用 XML 配置?

Q:怎么将两个 JavaConfig 类组合在一起?

1 packagesoundsystem;2

3 importorg.springframework.context.annotation.Bean;4 importorg.springframework.context.annotation.Configuration;5

6 @Configuration7 public classCDConfig {8

9 @Bean10 publicCompactDisc compactDisc(){11 return newSgtPeppers();12 }13 }

1 packagesoundsystem;2

3 importorg.springframework.context.annotation.Bean;4 importorg.springframework.context.annotation.Configuration;5 importorg.springframework.context.annotation.Import;6

7 @Configuration8 @Import(CDConfig.class)9 public classCDPlayerConfig {10

11 @Bean12 publicCDPlayer cdPlayer(CompactDisc compactDisc) {13 return newCDPlayer(compactDisc);14 }15

16 }

②、一种更好的方式:创建一个更高级别的 SoundSystemConfig,并在这个类中使用 @Import 将两个配置类组合在一起。

1 packagesoundsystem;2

3 importorg.springframework.context.annotation.Configuration;4 importorg.springframework.context.annotation.Import;5

6 @Configuration7 @Import({CDPlayerConfig.class, CDConfig.class})8 public classSoundSystemConfig {9 }

Q:该如何让 Spring 同时加载 通过 XML 来配置的 BlankDisc 和 其他基于 Java 的配置呢?

A:@ImportResource 注解。假定 BlankDisc 定义在名为 cd-config.xml 文件中,该文件位于根类路径下,那么可以修改 SoundSystemConfig ,让它使用 @ImportResource 注解。

1 <?xml version="1.0" encoding="UTF-8"?>

2

3 xmlns:c="http://www.springframework.org/schema/c"

4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

5 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

6

7

8 class="soundsystem.BlankDisc"

9 c:_0="titleValue"

10 c:_1="artist">

11

12

13 tracks01

14 tracks02

15 tracks03

16

17

18

19

Q:如何在 XML 配置中引用 JavaConfig?

A:在 JavaConfig 配置中,展示了如何使用 @Import 和 @ImportResource 来拆分 JavaConfig 类。

在 XML 中,我们使用 import 元素来拆分 XML 配置。

1 <?xml version="1.0" encoding="UTF-8"?>

2

3 xmlns:c="http://www.springframework.org/schema/c"

4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

5 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

6

7

11

12

13

14 class="soundsystem.CDPlayer"

15 c:compactDisc-ref="compactDisc"/>

16

我们也可以创建一个更高层次的配置文件,这个文件不声明任何的bean,只是负责将两个或者更多的配置组合起来。

1 <?xml version="1.0" encoding="UTF-8"?>

2

3 xmlns:c="http://www.springframework.org/schema/c"

4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

5 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

6

7

8

9

10

11

不管使用 JavaConfig 还是使用 XML 进行装配,我通常都会创建一个根配置,这个配置会将两个或更多的装配类和/或 XML 文件组合起来。

我也会在根配置中启用组件扫描(通过 context:component-scan 元素 或 @ComponentScan)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值