Spring look-up获取器注入

原创 2016年08月30日 07:23:23

获取器注入是一种特殊的方法注入,它是把一个方法声明为返回某种类型的bean,但实际要返回的bean是在配置文件里配置的,此方法可z爱设计有些可插拔功能上,接触程序依赖,我们看下具体应用:

我们首先创建一个父类

```
pubic class User{
    public void showMe(){
        System.out.println("i am user");
    }
}
```

创建其子类并覆盖showMe方法

```
public class Teacher extends User{
    public void showMe(){
        System.out.println("i am teacher");
    }
}
```

创建调用方法

public abstract class GetBeanTest{
    public void showMe(){
    this.getBean().showMe();
}

public abstract User getBean();
}

创建测试方法

public class Main{
    public static void main(String[] args){
    ApplicationContext bf = new ClassPathXmlApplication("test/lookup/lookupTest.xml");
    GetBeanTest test = (GetBeanTest)bf.getBean("getBeanTest");
    test.showMe();
}
}

到现在为止,除了配置文件外,整个测试方法就完成了,如果之前没有接触过获取器注入可能会有疑问:抽象方法还没有被实现,怎么可以直接调用呢?答案在Spring为我们提供的获取器中,我们看看配置文件的配置:
(只列出需自己手动添加的配置)

<bean id="getBeanTest" class="......GetBeanTest">
    <look-method name="getBean" bean="teacher"/>
</bean>
<bean id="teacher" class="....Teacher"/>

在配置文件中,我们看到了源码解析中提到的lookup-method子元素,这个配置完成的功能是动态的将teacher所代表的bean作为getBean的返回值,运行测试方法我们将会看到控制台上的输出:i am Teacher

当我们的业务变更或在其他情况下,teacher里面的业务逻辑已经不再符合我们的业务要求,需要进行替换怎么办呢?这是我们需要增加新的逻辑类:

public class Studetn extends Usser{
    public void showMe(){
        System.out.println("i am student");
    }
}

同时修改配置文件:

<bean id="getBeanTest" class=".....getBeanTest">
    <lookup-method name="getBean" bean="student"/>
</bean>

<bean id="teacher" class="...Teacher"/>
<bean id="student" class="...Student"/>

再次运行测试类,你会发现不一样的结果:i am student

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

低头族,Look Up!

从你的手机上抬起头来,世界从此不同……
  • foruok
  • foruok
  • 2015年05月22日 07:38
  • 3902

Weblogic报错:javax.naming.NameNotFoundException: While trying to look up jdbc in /app.;

先把问题踢出来:

OpenCV 2 学习笔记(16): 利用查找表(Look-up table)改善图片质量,增加图像对比度

本节是上一节的延伸,代码见: 查找表可以将一个像素值转换成另一个像素值得对照表。它可以是一对一或者多对一(原像素对于新像素)。所以他是一维的,对于规则的灰度图像,它有256个元素。表中的每一个元素...

获取Jawbone UP中的个人数据(二)非官方API , part 1

1. 概述和登陆 从Jawbone网站上,能够下载UP的个人数据,但是这个数据是以天为单位的汇总数据,如果我们需要更精细的数据,就必须通过程序获取。 Jawbone官方网站宣称已经提供开发API,...

PC-lint Error Code Look Up

  • 2012年02月22日 11:55
  • 220KB
  • 下载

获取Jawbone UP中的个人数据(二)非官方API, Part 4

4. 运动情况细节——Moves 在 Jawbone UP 的数据中, Move 指的是你的运动情况,Move 的数据是你从醒来之后到睡觉之间的所有运动。这有点废话。之所以这么说,是因为Jawbon...

获取Jawbone UP中的个人数据(一)官方下载

从Jawbone网站上,能够下载个人数据。这个数据能够满足我们以天为单位,对个人的饮食、运动、睡眠进行统计的需要。 操作步骤 打开Jawbone.com网站,登陆。 选择屏幕右上角的...

获取Jawbone UP中的个人数据(二)非官方API, Part 5

5. 锻炼情况细节——Workouts 锻炼使用户标注的某段时间的运动。通过“记录锻炼情况”菜单完成。 除了前面介绍的 user/%userXid%/social 等用户行为概述 API 之外...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring look-up获取器注入
举报原因:
原因补充:

(最多只允许输入30个字)