Spring的核心机制依赖注入简介(2)

本文介绍了Spring框架中的依赖注入概念,并详细解析了设值注入的具体应用。通过实例代码展示了如何使用Spring配置文件来组织Bean间的依赖关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

所谓依赖注入,是指程序运行过程中,如果需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部的注入。Spring的依赖注入对调用者和被调用者几乎没有任何要求,完全支持对POJO之间依赖关系的管理。依赖注入通常有两种:

  ·设值注入。

  ·构造注入。

  设值注入

  设值注入是指通过setter方法传入被调用者的实例。这种注入方式简单、直观,因而在Spring的依赖注入里大量使用。看下面代码,是Person的接口

//定义Person接口

 

public   interface  Person
{
 
//Person接口里定义一个使用斧子的方法
 public void useAxe();
}
 

  然后是Axe的接口

//定义Axe接口

 

public   interface  Axe
{
 
//Axe接口里有个砍的方法
 public void chop();
}
 

  Person的实现类

//Chinese实现Person接口

 

public   class  Chinese  implements  Person
{
 
//面向Axe接口编程,而不是具体的实现类
 private Axe axe;
 
//默认的构造器
 public Chinese()
 
{}
 
//设值注入所需的setter方法
 public void setAxe(Axe axe)
 
{
  
this.axe = axe;
 }

 
//实现Person接口的useAxe方法
 public void useAxe()
 
{
  System.out.println(axe.chop());
 }

}
 

  Axe的第一个实现类

//Axe的第一个实现类 StoneAxe

 

public   class  StoneAxe  implements  Axe
{
 
//默认构造器
 public StoneAxe()
 
{}
 
//实现Axe接口的chop方法
 public String chop()
 
{
  
return "石斧砍柴好慢";
 }

}
 

  下面采用Spring的配置文件将Person实例和Axe实例组织在一起。配置文件如下所示:

 

<!-- 下面是标准的XML文件头 -->
<?xml version="1.0" encoding="gb2312"?>
<!-- 下面一行定义Spring的XML配置文件的dtd -->
"http://www.springframework.org/dtd/spring-beans.dtd">
<!-- 以上三行对所有的Spring配置文件都是相同的 -->
<!-- Spring配置文件的根元素 -->
<BEANS>
 <!—定义第一bean,该bean的id是chinese, class指定该bean实例的实现类 -->
 <BEAN class=lee.Chinese id=chinese>
 <!-- property元素用来指定需要容器注入的属性,axe属性需要容器注入此处是设值注入,因此Chinese类必须拥有setAxe方法 -->
<property name="axe">
<!-- 此处将另一个bean的引用注入给chinese bean -->
<REF local="”stoneAxe”/">
</property>
</BEAN>
<!-- 定义stoneAxe bean -->
<BEAN class=lee.StoneAxe id=stoneAxe />
</BEANS> 

  从配置文件中,可以看到Spring管理bean的灵巧性。bean与bean之间的依赖关系放在配置文件里组织,而不是写在代码里。通过配置文件的指定,Spring能精确地为每个bean注入属性。因此,配置文件里的bean的class元素,不能仅仅是接口,而必须是真正的实现类。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值