【发布时间】:2021-04-01 01:46:15
【问题描述】:
我是使用 Spring boot 的新手,目前遇到了问题。
我有一个包含 3 层的应用程序,控制器、服务和存储库。 TL:DR,在这里找到我的设置图:
那么我该如何做呢?能够在控制器类中切换存储库吗?
控制器调用服务,然后使用存储库中的类返回正确的数据(在需要时执行逻辑魔术之后)。我还在使用 Hibernate 和 H2 inmemory 来简化 SQL 连接,但是出于测试目的,我希望在另一个存储库类中硬编码数据和方法。我的控制器通过服务使用 H2 inmem 数据源,而我的测试类使用硬编码数据源。
使用简单的依赖注入,我可以将所需的存储库类添加到服务类构造函数中,并且取决于使用测试类或控制器类,这可以正常工作。
但是,我想使用@Autowired 注释,发现您可以在服务类中使用@Qualifier 在自动装配的repo 类之间切换。但是,我不想在服务类中执行此操作(在那里对其进行硬编码),而是动态执行此操作,并让控制器或测试类注入数据源选择。
这是否可能,我该怎么做?
【问题讨论】:
-
不要,请不要,因为这违背了 DI 的目的。只需创建要在特殊配置中使用的存储库,以便只有一个存储库可以自动装配。
标签: java spring spring-boot spring-data-jpa