当前位置: 首页 > 知识库问答 >
问题:

在控制器中使用@autowired和@qualifier更改服务的数据源

赵志
2023-03-14

我刚开始使用spring boot,现在遇到了一个问题。

我有一个有3层的应用程序,控制器,服务和存储库。控制器调用服务,服务然后使用存储库中的类返回正确的数据(在需要时做了逻辑魔术之后)。我还使用Hibernate和H2 inmemory来简化SQL连接,但是出于测试目的,我希望在另一个存储库类中有硬编码的数据和方法。我的控制器通过服务使用H2 inmem数据源,而我的测试类使用硬编码的数据源。

使用简单的依赖注入,我可以将所需的respository类添加到服务类构造函数中,并且取决于是否使用测试类或控制器类,这可以很好地工作。

但是,我想使用@autowired注释,并发现您可以在service类中使用@qualifier在获得autowired的回购类之间切换。但是,我不想在服务类中这样做(在那里进行硬编码),而是动态地这样做,并让数据源选择由控制器或测试类注入。

这可能吗?我该怎么做?

共有1个答案

昌山
2023-03-14

您应该在ServiceImpl类的顶部使用@Service注释,然后在Controller中使用@Autowired服务。

 类似资料:
  • 问题内容: 是否通过@Autowired自动检测到?使用@Qualifier时是否按名称进行依赖项注入?我们如何使用这些批注进行setter和构造函数注入? 问题答案: 你可以与一起使用。实际上,如果发现模棱两可的bean类型,spring会询问你是否明确选择了bean,在这种情况下,你应该提供限定符 例如在以下情况下,有必要提供一个限定词 编辑: 在Lombok 1.18.4中,最终可以避免使用

  • 是否使用@autowired自动检测?使用@qualifier时是否按名称进行依赖注入?我们如何使用这些注释进行setter和constructor注入?

  • 问题内容: 我有一个ng- view以外的NavbarCtrl。我有一个与服务对话以使用户登录的登录控制器。用户登录后,我希望导航栏更新为用户的电子邮件地址。但是,对我而言,一旦用户登录,我似乎无法让Navbar范围更新加载到我的“ Auth”服务中的数据。 这是我的主要index.html: 而我的服务: 还有我的Login和Navbar控制器: 从我的研究中,我会认为$ scope.user

  • 问题内容: 我试图让两个不同的控制器互相通信。 控制器1 该控制器旨在从文本字段中获取文本(使用ng-model =’email’),并将文本放入服务(emailService)中,以便可以在下一个ng- view(由下一个ng-view控制)中使用控制器) //出于测试目的,我只是将“ Hi”直接放入saveEmail函数中 控制器2 为了进行有目的的测试,我使用window.alert显示ge

  • 嘿,伙计们,我是angular的新手,对JavaScript不是很熟练。这个设置很好地引入了json数据,但是,当我对对象中的某些属性进行更改时,它们会在我更改视图和重新加载控制器时重置。如有任何关于如何处理这一问题的帮助或指导,将不胜感激。

  • 问题内容: 当使用AngularJS服务尝试在两个控制器之间传递数据时,我的第二个控制器在尝试从该服务访问数据时始终会收到未定义的信息。我猜这是因为第一个服务执行的是$ window.location.href,并且我认为这正在清除服务中的数据?我是否可以将URL更改为新位置,并将数据保留在第二个控制器的服务中?当我运行下面的代码时,第二个控制器中的警报始终未定义。 app.js(定义服务的位置)