`
Jack-chen
  • 浏览: 71450 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

lookup方法注入

阅读更多
        spring中注入方式有多中,如构造方法,SET/GET方法等.lookup方法注入有些与其它的不一样,此方法注入常用来得到一个非单例对象.
lookup方法注入利用了spring ioc容器重写bean抽象(或)具体方法的能力,从而返回指定名字的bean实例.一般用来得到一个非单例对象.
         如果方法不是抽象的,spring回简单地覆盖已有的实现,在基于XML的配置文件中,通过在bean定义中使用lookup-method元素来告诉Spring所要足入/覆盖的方法将要返回的实际bean

--------------------------------------------------------------------------------

Random.java

package com.test;

public class Random {
private int i = (int) (100 * Math.random());

public void printRandom() {
  System.out.println("输出随机整数:  " + i);
}

}
------------------------------------------------
HelloRandom.java


package com.test;

public interface HelloRandom {
public Random getRandom();
    public Random createRandom();

}


-------------------------------------------------
HelloRandomAbstract.java


package com.test;

public abstract class HelloRandomAbstract implements HelloRandom{
private Random random;

public Random getRandom() {
  return random;
}

public void setRandom(Random random) {
  this.random = random;
}
    //此方法建议是抽象的
public abstract Random createRandom();

}


---------------------------
XML文件如下:
<bean id="random" class="com.test.Random" singleton="false"/>
   
    <bean id="helloRandomAbstract" class="com.test.HelloRandomAbstract">
   
        <lookup-method name="createRandom" bean="random"/>
       
        <property name="random">
            <ref local="random"/>
        </property>
     </bean>


helloRandomAbstract对象有2中方式可以得到Random对象:通过getRandom() 方法,通过createRandom()方法;
两者有什么不同呢,前一中方法得到的同一个对象,也就是说只要getRandom(),得到的都是同一个方法;后一种方法调用一次createRandom(),每次调用得到的都是性的Random对象.这就象前面说的spring ioc容器重写bean抽象(或)具体方法的能力,从而返回指定名字的bean实例.一般用来得到一个非单例对象.
另外还有一种方法可以实现类似功能:
<bean id="random" class="com.test.Random" scope="prototype"/>,因为prototype范围的bean,在没一次请求都会生成一个新的对象,就象是用new Random()一样;不足是,此属性只有在早期版本的spring不支持!
分享到:
评论

相关推荐

    深入理解Spring中的Lookup(方法注入)

    在Spring框架中,Lookup方法注入是一种特殊的依赖注入方式,它允许Spring容器动态替换bean中的某个方法,以便在运行时返回不同实例。这种方法主要用于处理单例bean依赖非单例bean的情况,确保每次调用都能获得一个新...

    spring资料6

    视频"Spring15_协调作用域不同的Bean与lookup方法注入.wmv"可能会详细解释如何管理这些不同作用域的Bean,以及如何使用lookup方法注入来动态地在运行时查找和注入依赖。 **Lookup方法注入**是一种特殊的依赖注入...

    Spring Framework Core 读书笔记

    Lookup 方法注入是 Spring Framework 中的一种机制,它允许容器覆盖容器管理的 bean 的方法,并返回另一个名为的 bean 的结果。这种机制是通过使用 CGLIB 库来动态生成子类实现的。例如,在 CommandManager 类中,...

    Spring.3.x企业应用开发实战(完整版).part2

    4.5.1 lookup方法注入 4.5.2 方法替换 4.6 之间的关系 4.6.1 继承 4.6.2 依赖 4.6.3 引用 4.7 整合多个配置文件 4.8 Bean作用域 4.8.1 singleton作用域 4.8.2 prototype作用域 4.8.3 Web应用环境相关的Bean作用域 ...

    Spring3.x企业应用开发实战(完整版) part1

    4.5.1 lookup方法注入 4.5.2 方法替换 4.6 之间的关系 4.6.1 继承 4.6.2 依赖 4.6.3 引用 4.7 整合多个配置文件 4.8 Bean作用域 4.8.1 singleton作用域 4.8.2 prototype作用域 4.8.3 Web应用环境相关的Bean作用域 ...

    NetBeans lookup的例子

    NetBeans Lookup是一个强大的服务发现和依赖注入机制,它在NetBeans平台的核心部分起着至关重要的作用。Lookup允许组件之间进行通信,无需事先了解其他组件的存在,增强了代码的可扩展性和可维护性。在这个"NetBeans...

    Spring-Reference_zh_CN(Spring中文参考手册)

    Lookup方法注入 3.3.8.2. 自定义方法的替代方案 3.4. bean的作用域 3.4.1. Singleton作用域 3.4.2. Prototype作用域 3.4.3. 其他作用域 3.4.3.1. 初始化web配置 3.4.3.2. Request作用域 3.4.3.3. Session作用域 3.4...

    Spring Ioc 注解 依赖注入

    - **@Resource**:也是用于依赖注入,但它属于JSR 250规范的一部分,可以通过name或lookup属性指定依赖的名称。 #### 五、示例代码分析 假设我们有一个简单的例子,包含一个UserService类和一个UserRepository类,...

    spring依赖注入的实现原理

    Spring可以通过调用setter方法或构造器来注入依赖。 7. **AOP代理(AOP Proxy)** Spring通过AOP代理来实现对Bean的增强,提供事务管理、日志记录等服务。有JDK动态代理和CGLIB代理两种方式,前者适用于接口,后者...

    .NET Autofac依赖注入

    依赖注入是做什么用的? 依赖注入又称之为控制反转(Inversion of ... 控制反转一般分为两种类型,依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)。依赖注入应用比较广泛。引用自百度百科。

    JNDI注入学习1

    JNDI注入漏洞通常发生在应用程序使用`InitialContext.lookup()`方法进行查找时,如果这个查找的URI(统一资源标识符)是由用户输入控制的,攻击者就可以构造恶意URI来执行任意代码。攻击过程通常包含以下步骤: 1. ...

    rapidsh-SSH经典整合框架-包括权限管理-文件上传下载-用户管理-分页-lookup

    综上所述,"rapidsh-SSH经典整合框架-包括权限管理-文件上传下载-用户管理-分页-lookup"是一个集成了上述技术的项目实例,它提供了一个完整的开发模板,可以帮助开发者快速搭建起具备上述功能的Web应用。通过学习和...

    Spring 框架中注入或替换方法实现

    例如,我们可以使用 lookup-method 标签来注入方法。 &lt;!-- 方法注入 --&gt; 毛姆" /&gt; &lt;lookup-method name="getAuthor" bean="author"/&gt; 在上面的示例中,我们使用 lookup-method 标签来注入 getAuthor() 方法,该...

    spring依赖注入知识点分享

    IoC 有两种方式:DL(Dependency Lookup)依赖查找和 DI(Dependency Injection)依赖注入。 DL 依赖查找 DL 依赖查找是一种 IoC 方式,它通过容器查找对象的依赖关系,典型的是 JNDI(Java Naming and Directory ...

    Spring相关设计思想解析IOC DI DL DP.doc

    - Setter注入:通过setter方法设置依赖对象,Spring会自动调用这些方法。 - 接口注入:通过实现特定接口,由容器调用接口方法注入依赖。 例如: ```java // 待注入的业务对象 public class Content { public ...

    spring里面想要让一个类的实例在所有属性都准备好之后就让它自动执行某些方法

    在Spring框架中,如果你希望一个类的实例在所有属性注入完成后自动执行某些特定的方法,你可以利用Spring的初始化回调机制。这个机制允许你在对象完全构造并准备好执行业务逻辑时执行一些自定义的操作。以下是对这个...

    依赖注入IOC

    2. **依赖查找**(Dependency Lookup):依赖查找是另一种实现控制反转的方法,它允许对象在运行时查询其所需的依赖服务。 #### 五、依赖倒置原则与控制反转的应用 为了更好地理解依赖倒置原则和控制反转的实际...

    NC65安全漏洞补丁.rar

    发现多处调用了NCLocator的lookup方法查找Service接口进行操作,通过跟踪发现,实际使用了RmiNCLocator类,RmiNCLocator类的lookup方法,这里的lookup,已初步判断出无需继续跟踪调试,可以直接通过jndi注入漏洞进行...

Global site tag (gtag.js) - Google Analytics