网站首页 > 知识剖析 正文
创建应用组件之间协作的行为通常称为装配【wiring】。Spring有多种装配Bean的方式,采用XML是很常见的一种装配方式。
下面展现了一个简单的Spring配置文件:骑士.xml,该配置文件将勇敢的骑士、屠龙任务和 PrintStream 装配到了一起。
pom
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.0.7.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.0.7.RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
代码
任务接口
public interface I任务 {
void 执行();
}
任务实现
import java.io.PrintStream;
public class 屠龙任务 implements I任务 {
private PrintStream stream;
public 屠龙任务(PrintStream stream) {
this.stream = stream;
}
public void 执行() {
stream.println("踏上屠龙的征程!");
}
}
骑士接口
public interface I骑士 {
void 执行任务();
}
骑士实现
public class 勇敢的骑士 implements I骑士 {
private I任务 任务;
public 勇敢的骑士(I任务 任务) {
this.任务 = 任务;
}
public void 执行任务() {
任务.执行();
}
}
xml配置
src/main/resources/META-INF/spring/骑士.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">
<!-- 使用Spring将 `屠龙任务` 注入到`勇敢的骑士`中 -->
<bean id="骑士" class="勇敢的骑士">
<constructor-arg ref="任务" />
</bean>
<bean id="任务" class="屠龙任务">
<constructor-arg value="#{T(System).out}" />
</bean>
</beans>
在这里,勇敢的骑士和 屠龙任务 被声明为Spring中的 Bean。
就勇敢的骑士Bean来讲,它在构造时传入了对屠龙任务Bean的引用,将其作为构造器参数。
<constructor-arg ref="任务" />
同时,屠龙任务 Bean的声明使用了Spring Expression Language ,将System.out 传入到了屠龙任务的构造器中。
<constructor-arg value="#{T(System).out}" />
main
import org.springframework.context.support.
ClassPathXmlApplicationContext;
// KnightMain.java 加载包含 骑士 的Spring上下文
public class 骑士Main {
public static void main(String[] args) throws Exception {
ClassPathXmlApplicationContext context =
new ClassPathXmlApplicationContext(
"META-INF/spring/骑士.xml");
I骑士 某骑士 = context.getBean(I骑士.class);
某骑士.执行任务();
context.close();
}
}
全部的代码可以在以下位置找到
https://gitee.com/virhuiai/spring-wiring-example/tree/master/自动装配之xml
参照自Spring in Action 4的例子
- 上一篇: 深入Spring Boot (十五):web.xml去哪了
- 下一篇: xml的名称空间是为什么
猜你喜欢
- 2024-11-23 Spring中源码中涉及的「设计模式」知多少?
- 2024-11-23 spring阅读--容器及实例化
- 2024-11-23 Java教程:学会写Starter-你就懂了SpringBoot自动配置
- 2024-11-23 SpringBoot学习笔记三之表述层
- 2024-11-23 如何使用Java API操作HDFS系统?
- 2024-11-23 Spring IOC容器XML配置示例
- 2024-11-23 xml 配置文件规范 校验
- 2024-11-23 阿里P7大神,Java学习之路-IO流与XML,超赞分享
- 2024-11-23 Java基础教程:dubbo源码解析-服务暴露与发现
- 2024-11-23 解决springboot的pom.xml文件第一行报错问题
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)