zoukankan      html  css  js  c++  java
  • spring学习总结——装配Bean学习四(导入和混合配置)

    情景:在典型的Spring应用中,我们可能会同时使用自动化和显式配置(JavaConfig)或者XML配置,幸好在Spring中,这些配置方案都不是互斥的。你尽可以将JavaConfig的组件扫描和自动装配和/或XML配置混合在一起。

      关于混合配置,第一件需要了解的事情就是在自动装配时,它并不在意要装配的bean来自哪里。自动装配的时候会考虑到Spring容器中所有的bean,不管它是在JavaConfig或XML中声明的还是通过组件扫描获取到的;

    一、在JavaConfig中引用XML配置

     1、使用@Import注解导入JavaConfig

    例子:在CDPlayerConfig中使用@Import注解导入CDConfig;

    CDConfig配置类:

    CDPlayerConfig配置类

    或者采用一个更好的办法,也就是不在CDPlayerConfig中使用@Import,而是创建一个更高级别的SoundSystemConfig,在这个类中使用@Import将两个配置类组合在一起:

     

    2、使用@ImportResource注解导入XML配置

     XML配置BlankDisc类:

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

    两个bean——配置在JavaConfig中的CDPlayer以及配置在XML中BlankDisc——都会被加载到Spring容器之中。因为CDPlayer中带有@Bean注解的方法接受一个CompactDisc作为参数(从spring容器),因此BlankDisc将会装配进来,此时与它是通过XML配置的没有任何关系。

     二、在XML配置中引用JavaConfig

    在JavaConfig配置中,我们已经展现了如何使用@Import@ImportResource来拆分JavaConfig类。在XML中,我们可以使用import元素来拆分XML配置。

    1、使用<import>在XML配置导入其他的XML配置

    比如,假设希望将BlankDisc bean拆分到自己的配置文件中,该文件名为cd-config.xml,这与我们之前使用@ImportResource是一样的。我们可以在XML配置文件中使用<import>元素来引用该文件:

    2、使用<bean>将JavaConfig类导入到XML配置中

    为了将JavaConfig类导入到XML配置中,我们可以这样声明bean:

     你可能还希望创建一个更高层次的配置文件,这个文件不声明任何的bean,只是负责将两个或更多的配置组合起来。例如,你可以将CDConfig bean从之前的XML文件中移除掉,而是使用第三个配置文件将这两个组合在一起:

    不管使用JavaConfig还是使用XML进行装配,我通常都会创建一个根配置(root configuration),也就是这里展现的这样,这个配置会将两个或更多的装配类和/或XML文件组合起来。我也会在根配置中启用组件扫描(通过<context:component-scan>或@ComponentScan)。你会在本书的很多例子中看到这种技术。

  • 相关阅读:
    UVALive 7141 BombX
    CodeForces 722D Generating Sets
    CodeForces 722C Destroying Array
    CodeForces 721D Maxim and Array
    CodeForces 721C Journey
    CodeForces 415D Mashmokh and ACM
    CodeForces 718C Sasha and Array
    CodeForces 635C XOR Equation
    CodeForces 631D Messenger
    田忌赛马问题
  • 原文地址:https://www.cnblogs.com/TvvT-kevin/p/9975914.html
Copyright © 2011-2022 走看看