spring 还可以使用xml和JavaConfig进行混合装配Bean
TestMain
@RunWith(SpringJUnit4ClassRunner.class)ServiceConfig
@ContextConfiguration(classes=ServiceConfig.class)
public class TestMain {
@Autowired
private Service service;
@Test
public void test(){
System.out.println(service.getConnection().getProxyInfo().getIp());
}
}
package com.halfworlders.web;ProxyInfoConfig
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
/**
* 通过@ImportResource在JavaConfig中引入XML配置
* 还可以通过@Import导入另外一个JavaConfig配置
*/
@Configuration
@ImportResource("classpath:spring-beans.xml")
public class ServiceConfig {
@Bean
public Service service(Connection connection) {
return new Service(connection);
}
}
package com.halfworlders.web;spring-beans.xml
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ProxyInfoConfig {
@Bean
public ProxyInfo proxy() {
return new ProxyInfo();
}
}
<?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:context="http://www.springframework.org/schema/context"xmlns:p="http://www.springframework.org/schema/p" xmlns:c="http://www.springframework.org/schema/c"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!-- 通过这种方式无法实现在XML中引入JavaConfig,如果有大神看到本帖,请告知原因 --><bean id="proxyInfoConfig" class="com.halfworlders.web.ProxyInfoConfig" /><bean id="proxyInfo" class="com.halfworlders.web.ProxyInfo" /><!-- 通过c命名空间装配构造函数参数 --><bean id="connection" class="com.halfworlders.web.Connection"c:_-ref="proxyInfo" /></beans>
另外 ProxyInfo,Connection,Service类的定义详见 点击打开链接