版权声明:本文为博主原创文章,未经博主允许不得转载。 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>