zoukankan      html  css  js  c++  java
  • 解决Spring中singleton的Bean依赖于prototype的Bean的问题

    在spring bean的配置的时候,可能会出现一个singleton的bean依赖一个prototype的bean。因为singleton的bean只有一次初始化的机会,所以他们的依赖关系页只有在初始化的时候被设置,在这个时候同样会初始化一个prototype的bean,这样就会导致本来是prototype的bean成了singleton了,这种矛盾的解决方案有两个:

      1.放弃使用依赖注入,在需要的时候主动向容器申请。

      2.利用方法注入

     第一种方法显然是不合理的~~~

    方法注入通常使用lookup方法,可以让spring容器重写容器中bean的抽象或具体的方法,返回该bean。

    具体实现方式:  

      Person 定义为singleton,依赖的Address定义为prototype


    首先在Person中定义一个抽象方法,例如 public abstract Address getAddress(); 当然这个方法的名字可以自定义,该方法不用去实现。相应的该类Person也会变成abstract。

    在beans.xml中的配置:

    注:bean默认的scope是singleton,所以上面省略了配置。

      <lookup-method>

        name :指定要lookup的方法,就是上面自定的方法

        bean:关联要生成的bean.

    这样以来就解决了不同作用域bean的依赖出现的矛盾问题。

  • 相关阅读:
    OAuth客户端调用
    OAuth中client id的处理
    Task作为返回值以及Task<TResult>作为返回值
    Netscaler立身之本—NAT
    Citrix Netscaler负载均衡算法
    Netscaler重置密码的方法
    Netscaler的超高端口复用助力应对公网地址紧张
    Netscaler工作流程
    深入理解Netscaler INat
    Citrix Netscaler版本管理和选择
  • 原文地址:https://www.cnblogs.com/plxx/p/5345542.html
Copyright © 2011-2022 走看看