Spring:IoC 用法(五、混合配置用法),springioc
分享于 点击 17271 次 点评:115
Spring:IoC 用法(五、混合配置用法),springioc
混合配置
Java配置与XML配置交叉使用
1、多个Java配置类
1)、定义Bean
模拟工作中的业务请求:
定义Controller控制层
@Controller
public class TestController {
@Autowired
private TestRepository repository;
// 测试注入方法
public String testController() {
return repository.testRepository();
}
}
定义Repository数据层接口
public interface TestRepository {
// 测试注入:调用方法
String testRepository();
}
定义Repository数据层接口实现
@Repository
public class TestRepositoryImpl implements TestRepository {
// 测试注入方法
public String testRepository() {
return "------------------------- >>> 获取数据成功!!";
}
}
2)、Java配置注入
专门扫描 Controller 配置
@Configuration
@ComponentScan(basePackages = "test.define.controller")
public class ControllerConfig {
}
专门扫描 Repository 配置@Configuration
@ComponentScan(basePackages = "test.define.repository")
public class RepositoryConfig {
}
组合以上两个配置@Configuration
@Import({ControllerConfig.class,RepositoryConfig.class})
public class Config {
}
3)、测试代码
依赖
<properties>
<spring.version>4.2.1.RELEASE</spring.version>
</properties>
<dependencies>
<!-- Spring 依赖注入 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- 仅测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
测试类
public class Test {
@org.junit.Test
public void test() {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
TestController controller = context.getBean(TestController.class);
String data = controller.testController();
System.out.println("结果:" + data);
context.close();
}
}
结果结果:------------------------- >>> 获取数据成功!!
2、多个XML配置文件
1)、定义Bean
(同上不变)
2)、XML配置注入
专门扫描Controller配置
<?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="test.define.controller"/>
</beans>
专门扫描Repository配置
<?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="test.define.repository"/>
</beans>
组合以上两个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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<import resource="ControllerConfig.xml"/>
<import resource="RepositoryConfig.xml"/>
</beans>
3)、测试代码
依赖(不变)
测试类
public class Test {
@org.junit.Test
public void test1() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/spring.xml");
TestController controller = context.getBean(TestController.class);
String data = controller.testController();
System.out.println("结果:" + data);
context.close();
}
}
结果(不变)
3、Java配置与XML配置(Java为主)
1)、定义Bean
(同上不变)
2)、配置
专门扫描Controller配置
@Configuration
@ComponentScan(basePackages = "test.define.controller")
public class ControllerConfig {
}
专门扫描Repository配置
<?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="test.define.repository"/>
</beans>
Java配置组合以上两个配置
@Configuration
@Import(ControllerConfig.class)
@ImportResource("classpath:spring/RepositoryConfig.xml")
public class Config {
}
3)、测试代码
依赖(不变)
测试类
public class Test {
@org.junit.Test
public void test() {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
TestController controller = context.getBean(TestController.class);
String data = controller.testController();
System.out.println("结果:" + data);
context.close();
}
}
结果(不变)
4、XML配置与Java配置用(XML为主)
1)、定义Bean
(同上不变)
2)、配置
专门扫描Controller配置
<?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="test.define.controller"/>
</beans>
专门扫描Repository配置
@Configuration
@ComponentScan(basePackages = "test.define.repository")
public class RepositoryConfig {
}
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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<import resource="ControllerConfig.xml"/>
<bean class="test.config.RepositoryConfig"/>
</beans>
3)、测试代码
依赖(不变)
测试类
public class Test {
@org.junit.Test
public void test() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/spring.xml");
TestController controller = context.getBean(TestController.class);
String data = controller.testController();
System.out.println("结果:" + data);
context.close();
}
}
结果(不变)相关文章
- 暂无相关文章
用户点评