概念

lookup-method一旦应用,Spring框架会自动使用CGLIB技术为指定类型动态创建一个动态子类型,并自动实现抽象方法。可以动态的实现依赖注入的数据准备。

应用场景

可以只提供 lookup-method 方 法的返回值对象即可实现动态的对象返回。 在工厂方法难以定制的时候使用。 也是模板的一种应用。是工厂方法的扩展。 如:工厂方法返回对象类型为接口类型。且不同版本应用返回的对象未必相同时使用。 可以避免多次开发工厂类。

代码实现

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestLookupMethod{ public static void main(String[] args){
ApplicationContext context= new ClassPathXmlApplicationContext("classpath:lookupmethod/applicationContext.xml");
CommandManager manager = context.getBean("manager",CommandManager.class);
System.out.println(manager.getClass().getName()); manager.process();
}
}
abstract class CommandManager{
public void process(){
MyCommandcommand=createCommand(); //dosomething... System.out.println(command);
}
protected abstract MyCommand createCommand();
}
class MyCommand{
publicMyCommand(){ System.out.println("MyCommandinstanced");} }
<beansxmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:c="http://www.springframework.org/schema/c" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="manager"class="com.xxx.lookupmethod.CommandManager"> <lookup-method bean="command"name="createCommand"/> </bean>
<bean id="command"class="com.xxx.lookupmethod.MyCommand"></bean>
</beans>

lookup-method方法理解相关推荐

  1. Spring查找方法注入(Lookup method injection)的底层实现原理

    2019独角兽企业重金招聘Python工程师标准>>> 美女邀我去歌舞厅娱乐,我拒绝了,我觉得跟技术宅男们分享技术更为重要. Spring方法注入的概念:一个由容器管理的single ...

  2. iphone UIView的一些基本方法理解

    原文链接地址:http://www.cocoachina.com/bbs/read.php?tid=38766 UIView的一些基本方法理解 UIView的一些基本方法理解:loadView.vie ...

  3. Error creating bean with name ‘multipartResolver‘: Lookup method resolution failed; 上传文件异常

    浏览器错误信息: 错误信息: HTTP状态 500 - 内部服务器错误 类型 异常报告消息 Servlet[springmvctest]的Servlet.init()引发异常描述 服务器遇到一个意外的 ...

  4. K2评分方法理解实例

    文章目录 贝叶斯网络:K2评分方法理解实例 贝叶斯网络:K2评分方法理解实例

  5. Python getitem方法理解

    Python: getitem方法理解 Python方法__getitem__可以实现对象的迭代功能,然后可以使用for ... in ... 来迭代对象了 class Animal:def __in ...

  6. 技术沙龙系列之:Scala method(方法) 和 functio(函数) 的区别

    下面来简单介绍一下如何来认识Scala method(方法) 和 functio(函数) 的区别,具体如下所示: 在我没有学习 scala 的时候,主要用 java 和 python 做日常工作开发, ...

  7. Kernel Method的理解

    kernel method是针对低维线性不可分而提出的一种解决方法,在PRML中有一章节的介绍,对其理解,也是迭代更进的过程. 简单来说,kernel method是一种低维和高维特征空间映射的方法, ...

  8. Spring-方法注入lookup、方法替换MethodReplacer接口

    问题 lookup方法注入 概述 实例 方法一 通过在配置文件中配置的方式实现 方法二 通过实现接口代码的方式实现 小结 方法替换MethodReplacer接口 概述 实例 小结 总结 问题 无状态 ...

  9. Golang method 方法详解

    前言 作为一种面向对象编程语言,Golang 和其他的 OOP 语言在面向对象的实现上有较大的区别,他没有 class 的概念,而是通过 结构体(struct)-方法(method)-接口(inter ...

  10. JQuery添加扩展方法(理解$.extend(),与$.fn.extend()方法区别)

    为什么80%的码农都做不了架构师?>>>    理解$.extend(),与$.fn.extend()方法区别 1.$.extend()方法 $.extend()方法在JQuery中 ...

最新文章

  1. centosx64 6.3安装视频组件
  2. mysql curd操作_(四):CURD操作详解(增删改查)
  3. 查看Linux的磁盘使用情况
  4. 146. LRU缓存机制
  5. v-region 地址组件无法回显问题(选择地址保存后,打开编辑,发现刚才选择的地址【省市县乡】信息消失,信息不回显)
  6. ajax无法发送json串,如何使用$ .ajax发送JSON而不是查询字符串?
  7. 直接无序搜索 vs 先排序后搜索
  8. Atitit.java的浏览器插件技术 Applet japplet attilax总结
  9. Linux之mmap
  10. [转载]互联网扫描器 ZMap 完全手册
  11. android浏览器自动全屏,Android开发实现浏览器全屏显示功能
  12. java 2 sdk下载_Java 2 SDK Standard Edition官方版
  13. 豆瓣8.0高分电影~渣男人格之《剧场》追剧后感
  14. java定义苹果类Apple_Java开发笔记(七十)Java8新增的几种泛型接口
  15. linux 文本三剑客之sed编辑器
  16. html----烟花代码
  17. 京东FBP、LBP、SOP、SOPL 四种分别是什么意思?
  18. 数学建模之规划1——线性规划
  19. [LeetCode] 300 最长递增子序列 及返回这一子序列
  20. 移动客户端与服务端离线数据上报功能解决方案

热门文章

  1. 计算机专业小米笔记本推荐,小米笔记本电脑怎么样有哪些型号,哪款性价比高?...
  2. 华为路由器配置VRRP
  3. 全能扫描王的实现(python版本)- 目标检测图像矫正
  4. 获取iPhone手机 UDID的方式--一网打尽(无论有无MAC电脑)
  5. python3中文长度_python3获得汉字长度
  6. Android app分享文件到微信
  7. IPS和IDS的区别
  8. 丁昊 北大计算机,北大清华17人!2018自主招生等类型入选名单公示,苏州333人!...
  9. 人工智能--框架表示法
  10. 谈谈外贸自建站收款方式及优缺点有哪些?