如何在 Spring 启动时限制 src/test/java 的自动扫描?
How to restrict autos scanning of src/test/java in Spring Boot?
我按照本书 "Mastering Spring MVC" 创建了一个简单的 Web 应用程序。一切正常,但是,在测试章节中,我创建了两个带有 @Primary 注释的 bean。 1. ProviderSignInController 和 2. 我的搜索服务的实现 class。这两个都在包 src/test/java.
中
这里的问题是,如果我部署我的应用程序,即使这样,这两个 bean 也会出现,我无法使用我的实际身份验证和搜索服务。
我没有收到任何错误或异常。我想知道什么是在我的开发环境中部署应用程序时测试和实际实现时自动注入我的 mocks/stubs 的最佳方法。
源代码 link 是 here。谢谢
问题出在我执行应用程序的方式上。
当我直接从 eclipse 启动应用程序时(运行 作为 Spring 引导应用程序),测试包含在构建中,因为它们存在于类路径中。
我修改了我的方法,现在我正在使用 gradle build (gradle boot运行) 来启动我的应用程序。这解决了问题。感谢@DwB 提供提示
我建议将 @Profile("PRODUCTION")
与 @Bean
一起用于 real/production beans/classes 和 @Profile("!PRODUCTION")
,而不是 @Primary
测试 beans/classes。然后,在运行时指定活动配置文件
-Dspring.profiles.active=PRODUCTION, ...
我按照本书 "Mastering Spring MVC" 创建了一个简单的 Web 应用程序。一切正常,但是,在测试章节中,我创建了两个带有 @Primary 注释的 bean。 1. ProviderSignInController 和 2. 我的搜索服务的实现 class。这两个都在包 src/test/java.
中这里的问题是,如果我部署我的应用程序,即使这样,这两个 bean 也会出现,我无法使用我的实际身份验证和搜索服务。
我没有收到任何错误或异常。我想知道什么是在我的开发环境中部署应用程序时测试和实际实现时自动注入我的 mocks/stubs 的最佳方法。
源代码 link 是 here。谢谢
问题出在我执行应用程序的方式上。
当我直接从 eclipse 启动应用程序时(运行 作为 Spring 引导应用程序),测试包含在构建中,因为它们存在于类路径中。
我修改了我的方法,现在我正在使用 gradle build (gradle boot运行) 来启动我的应用程序。这解决了问题。感谢@DwB 提供提示
我建议将 @Profile("PRODUCTION")
与 @Bean
一起用于 real/production beans/classes 和 @Profile("!PRODUCTION")
,而不是 @Primary
测试 beans/classes。然后,在运行时指定活动配置文件
-Dspring.profiles.active=PRODUCTION, ...