zoukankan      html  css  js  c++  java
  • spring lookup method 注入

     
         lookup method注入是spring动态改变bean里方法的实现。方法执行返回的对象,使用spring内原有的这类对象替换,通过改变方法返回值来动态改变方法。内部实现为使用cglib方法,重新生成子类,重写配置的方法和返回对象,达到动态改变的效果。 
     
         实例如下:
    package fiona.apple;
     
    // no more Spring imports!
     
    public abstract class CommandManager {
     
        public Object process(Object commandState) {
            // grab a new instance of the appropriate Command interface
            Command command = createCommand();
            // set the state on the (hopefully brand new) Command instance
            command.setState(commandState);
            return command.execute();
        }
     
        // okay... but where is the implementation of this method?
        protected abstract Command createCommand();
    }
    配置:
    <!-- a stateful bean deployed as a prototype (non-singleton) -->
    <bean id="command" class="fiona.apple.AsyncCommand" scope="prototype">
        <!-- inject dependencies here as required -->
    </bean>
     
    <!-- commandProcessor uses statefulCommandHelper -->
    <bean id="commandManager" class="fiona.apple.CommandManager">
        <lookup-method name="createCommand" bean="command"/>
    </bean>
    注意:由于采用cglib生成之类的方式,所以需要用来动态注入的类,不能是final修饰的;需要动态注入的方法,也不能是final修饰的。
     
    同时,还得注意command的scope的配置,如果scope配置为singleton,则每次调用方法createCommand,返回的对象都是相同的;如果scope配置为prototype,则每次调用,返回都不同。
     
     
  • 相关阅读:
    Hbase flusher源码解析(flush全代码流程解析)
    HBase行锁原理及实现
    Hbase源码之 compact源码(二)
    hbase源码之 compact源码(一)
    手动下载jar包导入mvn repo的方法
    JAVA Api 调用Hbase报错锦集
    Hbase Filter之PrefixFilter
    Hbase Filter之FilterList
    windows环境中hbase源码编译遇到的问题
    Hbase put写入源码分析
  • 原文地址:https://www.cnblogs.com/sten/p/5745768.html
Copyright © 2011-2022 走看看