现在, 我们临时假设CDPlayerConfig已经变得有些笨重, 我们想要将其进行拆分。 当然, 它目前只定义了两个bean, 远远称不上复杂的Spring配置。 不过, 我们假设两个bean就已经太多了。
我们所能实现的一种方案就是将BlankDisc从CDPlayerConfig拆分出来, 定义到它自己的CDConfig类中, 如下所示:
compactDisc()方法已经从CDPlayerConfig中移除掉了, 我们需要有一种方式将这两个类组合在一起。 一种方法就是
在CDPlayerConfig中使用@Import注解导入CDConfig :
或者采用一个更好的办法, 也就是不在CDPlayerConfig中使用@Import, 而是创建一个更高级别的SoundSystemConfig, 在这个类中使用@Import将两个配置类组合在一起:
不管采用哪种方式, 我们都将CDPlayer的配置与BlankDisc的配置分开了。 现在, 我们假设(基于某些原因) 希望通过XML来配置BlankDisc, 如下所示:
现在BlankDisc配置在了XML之中, 我们该如何让Spring同时加载它和其他基于Java的配置呢?
答案是@ImportResource注解, 假设BlankDisc定义在名为cd-config.xml的文件中, 该文件位于根类路径下, 那么可以修
改SoundSystemConfig, 让它使用@ImportResource注解, 如下所示:
两个bean——配置在JavaConfig中的CDPlayer以及配置在XML中BlankDisc——都会被加载到Spring容器之中。 因为CDPlayer中带有@Bean注解的方法接受一个CompactDisc作为参数, 因此BlankDisc将会装配进来, 此时与它是通过XML配置的没有任何关系。