SpringAction学习一、装配bean:一些补充(2)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/MASORL/article/details/82634218

导入和混合配置

(1)JavaConfig中导入其他的JavaConfig

示例代码:

CDConfig 中配置了一个CompactDisc  bean

package com.spring.action.mixedconfig;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class CDConfig {
    @Bean
    public CompactDisc compactDisc(){
        return new SgtPepper();
    }
}

CDPlayer通过@Import 注解,引入了CDConfig的配置,从而使用了CompactDisc bean

package com.spring.action.mixedconfig;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

@Configuration
@Import(CDConfig.class)
public class CDPlayerConfig {
    @Bean
    public MediaPlayer mediaPlayer(CompactDisc compactDisc){
        return new CDPlayer(compactDisc);
    }
}

或者更好的办法,使用一个专门的上级配置类,来讲CDConfig和CDPlayerConfig组合在一起(CDPlayerConfig无需导入CDConfig,且两个配置类不用再使用@Configuration注解)

上级配置类,导入了两个class

package com.spring.action.mixedconfig;

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

@Configuration
@Import({CDConfig.class, CDPlayerConfig.class})
public class JavaConfig {
}

两个下级配置类,不需要@Configuration,也不需要@Improt

package com.spring.action.mixedconfig;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

//@Configuration
public class CDConfig {
    @Bean
    public CompactDisc compactDisc(){
        return new SgtPepper();
    }
}
package com.spring.action.mixedconfig;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

//@Configuration
//@Import(CDConfig.class)
public class CDPlayerConfig {
    @Bean
    public MediaPlayer mediaPlayer(CompactDisc compactDisc){
        return new CDPlayer(compactDisc);
    }
}

(2)JavaConfig中导入XML

示例代码

JavaConfig:通过@ImportResource导入xml

package com.spring.action.mixedconfig;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.ImportResource;

//@Configuration
//@Import(CDConfig.class)
@ImportResource("classpath:cd-config.xml")
public class CDPlayerConfig {
    @Bean
    public MediaPlayer mediaPlayer(CompactDisc compactDisc){
        return new CDPlayer(compactDisc);
    }
}

cd-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:c="http://www.springframework.org/schema/c"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="sgtPepper" class="com.spring.action.mixedconfig.SgtPepper"/>
    <!--<bean id="cdPlayer" class="com.spring.action.mixedconfig.CDPlayer" c:_0-ref="sgtPepper"/>-->
</beans>

(3)在XML中引入JavaConfig

CDConfig:同样的,不需要@Configuration

package com.spring.action.mixedconfig;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

//@Configuration
public class CDConfig {
    @Bean("cdx")
    public CompactDisc compactDisc(){
        return new SgtPepper();
    }
}

XML: 通过<bean>标签引入,c:_o-ref="cdx",cdx对应的是CDCing的bean id

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:c="http://www.springframework.org/schema/c"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--<bean id="sgtPepper" class="com.spring.action.mixedconfig.SgtPepper"/>-->
    <bean class="com.spring.action.mixedconfig.CDConfig"/>
    <bean id="cdPlayer" class="com.spring.action.mixedconfig.CDPlayer" c:_0-ref="cdx"/>
</beans>

(4)在XML中导入XML

使用<import>标签导入即可

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:c="http://www.springframework.org/schema/c"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--<bean class="com.spring.action.mixedconfig.CDConfig"/>-->
    <!--<bean id="cdPlayer" class="com.spring.action.mixedconfig.CDPlayer" c:_0-ref="cdx"/>-->
    <import resource="cd-config.xml"/>
    <bean id="cdPlayer" class="com.spring.action.mixedconfig.CDPlayer" c:_0-ref="sgtPepper"/>
</beans>

猜你喜欢

转载自blog.csdn.net/MASORL/article/details/82634218
今日推荐