使用Spring(八) 延迟初始化bean、Lookup方法注入
来源:互联网 发布:ubuntu查看用户名密码 编辑:程序博客网 时间:2024/06/05 08:48
spring官方说明:
Lookup方法注入利用了容器的覆盖受容器管理的bean方法的能力,从而返回指定名字的bean实例。在上述场景中,Lookup方法注入适用于原型bean(尽管它也适用于singleton bean,但在那种情况下直接注入一个实例就够了)。Lookup方法注入的内部机制是Spring利用了CGLIB库在运行时生成二进制代码功能,通过动态创建Lookup方法bean的子类而达到复写Lookup方法的目的。
1.applicationContext4.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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 延迟初始化bean --> <bean id="bean2" class="com.yw.test05.ExpensiveToCreateBean" lazy-init="true"></bean> <!-- <bean id="bean1" class="com.yw.test05.ExpensiveToCreateBean" lazy-init="false"> </bean> --> <!-- Lookup方法注入 --> <!-- a stateful bean deployed as a prototype (non-singleton) --> <bean id="command" class="com.yw.test05.AsyncCommand" scope="prototype" lazy-init="true"> <!-- inject dependencies here as required --> </bean> <!-- commandProcessor uses statefulCommandHelper --> <bean id="commandManager" class="com.yw.test05.CommandManager"> <lookup-method name="createCommand" bean="command" /> </bean></beans>
2.
package com.yw.test05;public abstract class CommandManager{// mmm, but where is the implementation of this method?abstract Command createCommand();}
package com.yw.test05;public interface Command{}
package com.yw.test05;public class AsyncCommand implements Command{public AsyncCommand(){System.out.println("==AsyncCommand()==");}}
package com.yw.test05;import org.springframework.beans.factory.BeanFactory;import org.springframework.context.ApplicationContext;import org.springframework.context.support.FileSystemXmlApplicationContext;public class Test04{public static void main(String[] args){// 实例化容器方法三classpath:// ApplicationContext context = new ClassPathXmlApplicationContext(new String[] {// "com/yw/test05/applicationContext.xml"});ApplicationContext context = new FileSystemXmlApplicationContext(new String[] { "classpath:com/yw/test05/applicationContext4.xml" });// of course, an ApplicationContext is just a BeanFactoryBeanFactory factory = (BeanFactory) context;// 延迟初始化beanObject obj = factory.getBean("bean2");System.out.println("obj=" + obj);// Lookup方法注入Object obj2 = factory.getBean("commandManager");System.out.println("obj2=" + obj2);CommandManager comManager = (CommandManager) obj2;Command command = comManager.createCommand();System.out.println("cmmand=" + command);}}
3.运行
0 0
- 使用Spring(八) 延迟初始化bean、Lookup方法注入
- spring Lookup方法注入
- spring 的 lookup方法注入
- spring 方法注入 lookup方法注入
- spring的延迟初始化bean
- Spring Bean的延迟初始化
- 快速上手Spring--9. Lookup方法注入
- 快速上手Spring--9. Lookup方法注入
- Spring内核研究-Lookup方法注入
- 快速上手Spring--9. Lookup方法注入
- 快速上手Spring--9. Lookup方法注入
- 快速上手Spring--9.Lookup方法注入
- Spring的方法注入lookup-method
- Spring annotation 之lookup (方法注入)
- Spring初始化Bean方法
- spring 注入bean 时的初始化
- spring quartz 集群bean注入初始化
- spring(bean初始化、销毁、注入,作用域)
- Codeforces Round #376 (Div. 2) E dp
- Android Glide数据更新及内存缓存、硬盘缓存清理
- 。
- 分布式互联网架构——docker
- Day37:Interview for Baidu
- 使用Spring(八) 延迟初始化bean、Lookup方法注入
- 给自己的博客打一个广告
- 软件危机的相关概念、背景、表现形式
- JavaScript面向对象学习笔记基础与进阶
- OpenJudge noi 2971抓住那头牛(POJ 3278)
- Elasticsearch中的一些知识
- PHP经典实例读书笔记--类和对象
- vim的环境配置
- 银行系统运维手记---2016-10-19-问题集