加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在运行时创建的对象中使用自动装配的bean

发布时间:2020-12-15 05:08:24 所属栏目:Java 来源:网络整理
导读:我有一个实现W接口的B类.它有W方法的默认实现.类C和D覆盖默认实现,它们需要一个服务,其bean由 spring实例化.字符串a和b来自用户,因此我无法提前创建B / C / D的bean.所以我有一个工厂,它根据用户参数创建一个新对象(它将根据参数创建B / C / D).有什么干净的
我有一个实现W接口的B类.它有W方法的默认实现.类C和D覆盖默认实现,它们需要一个服务,其bean由 spring实例化.字符串a和b来自用户,因此我无法提前创建B / C / D的bean.所以我有一个工厂,它根据用户参数创建一个新对象(它将根据参数创建B / C / D).有什么干净的方法我可以使用C和D内部的服务bean(aa / bb / cc / dd等)(服务器启动期间的弹簧自动装配,此时实例化B / C / D所需的参数不可用)或有没有更好的方法来解决这个问题?

Class B implements W{
      String a;
      String b;
      B (String a,String b);

      w_method(){

      }
   }

    Class C extends B {
      @Autowired
      Service aa;

      @Autowired
      Service bb;

      @Autowired
      Service cc;

      @override
      w_method(){
      }
    }

Class D extends B {
  @Autowired
  Service dd;

  @override
  w_method(){
  }
}

解决方法

我认为最简单的方法是将服务连接到工厂并在返回之前调用B / C / D对象上的setter,而不是尝试使用@Autowired.

或者使用axtavt的构造函数参数方法.如果你想避免依赖于ApplicationContext,你可以使用Lookup Method Injection,但你必须根据这篇博文发布补丁:http://nurkiewicz.blogspot.co.uk/2010/08/creating-prototype-spring-beans-on.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读