为编程爱好者分享易语言教程源码的资源网

网站首页 > 网络编程 正文

Spring自动装配之xml例子(spring自动装配的优缺点)

三叶资源网 2022-09-03 20:18:50 网络编程 322 ℃ 0 评论

创建应用组件之间协作的行为通常称为装配【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的例子

Tags:

来源:三叶资源网,欢迎分享,公众号:iisanye,(三叶资源网⑤群:21414575

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

百度站内搜索
关注微信公众号
三叶资源网⑤群:三叶资源网⑤群

网站分类
随机tag
四方Js加密网页分析工具图片进度条快速排序花椒直播工具仓库管理数据库LOL免更新Sqlite本地库检测更新QQ邮箱扫码登录喊麦xm-sign算法字节集搜索英文智能提示微信群发器APP授权软件截图模块源码
最新评论