开发者社区 问答 正文

Spring能否实现动态注入

请教大家一个问题 spring 的 Controller 里我如果想根据前端发过来的请求参数注入不同的 Service 实现 这个该怎么做呢?就是有这样一个场景 我们的广告系统对接有很多广告商,广告商是会不定期增加的,每一个广告商一个 Service 实现,有一个公共 Service 接口,在前端发过来的请求中有几个特殊的参数,拿着这几个参数去 mongo 库里查出来这个请求应当走哪个广告商提供的服务。现在我想实现在 Controller 里动态的注入广告商的 Service 也就是根据前端请求参数查询 mongo 得到当前请求需要注入哪个 Service 实现。这种注入应该怎么做呢,除了加一层用于分发到具体 Service 得 dispatcherService 还有没有别的能给直接动态 Autowired 得注入方式呢?另外,我想到是不是可以用 org.springframework.beans.factory.FactoryBean 。但是,后来想了想 org.springframework.beans.factory.FactoryBean 里面怎么接收 Controller 接过来的前端请求呢,而且每次请求都要产生不同的 bean 不知道行不行?

展开
收起
景凌凯 2020-04-22 17:40:10 1390 分享 版权
2 条回答
写回答
取消 提交回答
  • 可以。

    spring依赖注入知的三种实现形式分别为:

    1、 接口注入

    2、 设置注入

    3.构造子函数注入

    接口注入:而接口注入则更方便道动态注入。简单的说,接口注入就是在运专行期,加载接口实现并创建其实例的工作由容器完成。如下例子:

    public class ClassA {

    private InterfaceB clzB;

    public Object doSomething(InterfaceB b) {

    clzB = b;

    return clzB.doIt();

    }

    ……

    }

    在运行期,InterfaceB实例将由spring容器提供。而spingIOC概念的提出也是把动属态注入在spring体现了。

    2020-05-04 09:46:27
    赞同 展开评论
  • 有点尴尬唉 你要寻找的东西已经被吃掉啦!

    使用中间层实现。

    2020-04-22 17:40:20
    赞同 展开评论