spring bean中子元素lookup-method和replaced-method
2016-09-11 14:49
627 查看
spring bean中有两个子元素lookup-method和replaced-method,虽然不常用,但觉得很有用,拿出来聊聊。
1.lookup-method
通常称为获取器注入,spring in action中对它的描述是,一种特殊的方法注入,它是把一个方法声明为返回某种类型的bean,而实际要返回的bean是在配置文件里面配置的,可用在设计可插拔的功能上,接触程序依赖。
首先创建一个父类
创建其子类并覆盖who方法
创建调用方法
配置文件
测试
运行结果
说明
1.可以看到,只是调用了一个没有实现的抽象方法,就完成了执行,这貌似是不合理的(没有实现的抽象方法怎么可以被调用呢?)
2.原因就在于,配置文件中的lookup-method的元素,它直接将kobe代表的bean作为getBean的返回值
3.如果有一天我们不需要kobe的逻辑了,那就重新创建一个需要的bean,并将bean id设置为 lookup-method元素的bean属性值就可以了
2.replaced-method
可以在运行时用新的方法替换旧的方法。还是继续按照上边的例子举例,如果我觉得kobe不行,yaoming行,那我就可以用yaoming替换kobe
接着上边的例子,创建一个bean :Yao,要实现spring的MethodReplacer接口
进行配置
测试
执行结果
说明
1.可以看到,执行who的时候,其实执行的是Yao中的方法,也就是说,被替换了
2.lookup-method要执行新的逻辑,需要新加bean;replaced-method则是将之前执行的逻辑替换掉
1.lookup-method
通常称为获取器注入,spring in action中对它的描述是,一种特殊的方法注入,它是把一个方法声明为返回某种类型的bean,而实际要返回的bean是在配置文件里面配置的,可用在设计可插拔的功能上,接触程序依赖。
首先创建一个父类
创建其子类并覆盖who方法
创建调用方法
配置文件
测试
运行结果
说明
1.可以看到,只是调用了一个没有实现的抽象方法,就完成了执行,这貌似是不合理的(没有实现的抽象方法怎么可以被调用呢?)
2.原因就在于,配置文件中的lookup-method的元素,它直接将kobe代表的bean作为getBean的返回值
3.如果有一天我们不需要kobe的逻辑了,那就重新创建一个需要的bean,并将bean id设置为 lookup-method元素的bean属性值就可以了
2.replaced-method
可以在运行时用新的方法替换旧的方法。还是继续按照上边的例子举例,如果我觉得kobe不行,yaoming行,那我就可以用yaoming替换kobe
接着上边的例子,创建一个bean :Yao,要实现spring的MethodReplacer接口
进行配置
测试
执行结果
说明
1.可以看到,执行who的时候,其实执行的是Yao中的方法,也就是说,被替换了
2.lookup-method要执行新的逻辑,需要新加bean;replaced-method则是将之前执行的逻辑替换掉
相关文章推荐
- spring bean中子元素lookup-method和replaced-method
- spring-study--lookup-method--replaced-method用法
- 解析BeanDefinition之解析子元素replaced-method
- Spring的XML配置文件中的bean的子元素lookup-method的作用是什么
- spring 之 lookup-method & replaced-method II
- Spring高级配置:lookup-method, replaced-method
- 3.4 spring- lookup-method 子元素的使用与解析
- 3.5 spring-replaced-method 子元素的使用与解析
- Action配置(动态方法调用、为Action元素指定method属性、通配符映射)
- 在Spring中使用replaced-method来进行方法替换
- Spring的方法注入lookup-method(转)
- spring lookup method 注入
- 在Spring中使用replaced-method来进行方法替换
- Spring - lookup-method方式实现依赖注入
- 《Spring 技术手册》3.2.6 Lookup Method Injection 笔记
- factory-bean与lookup-method
- spring源码附录(3)spring bean子标签 loopup-method、replaced-method基本用法
- spring-"lookup-method"
- Spring的方法注入lookup-method
- Can be replaced with method reference less 可以用代码更少的方法引用代替