问题标签 [context-configuration]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 在 SpringJUnit4ClassRunner 中获取所有类型的 Bean
我很难为以下测试课程找到合适的答案:
我想从有界中收集所有 Spring 托管context
services.xml
的Service
.
我很确定一定有这样的东西,但我不知道我要搜索什么。
非常感谢您的帮助。
斯特凡
spring - 为什么在运行 Spring Integration 测试时出现 NoSuchBeanDefinedException
我有一个 Spring Boot 项目,其中一位开发人员针对内存数据库编写了集成测试。在我提出问题之前,这里有一些背景知识:
我们有以下 Maven 模块:
1) web-persistence:存储所有实体和接口以及相应的实现。所有这些类都在 package 中com.mycompany.persistence
。
2) web-services:它存储了我们所有的rest控制器和spring security相关的类。这些都在包com.mycompany.services
3) web-services 模块对 web-persistence 模块有 maven 模块依赖。
4) 在 web-services 模块中,我们定义了一个服务UserContextServiceImpl
,它是接口的实现IUserContextService
. 该服务基本上封装了 Spring 的 SecurityContextHolder 功能,只公开其方法所需的当前用户相关信息的那些部分,这样我们就不必在任何地方使用 SecurityContextHolder。实现类使用@Service("userContextService") 进行注释。
5) 接口IUserContextService
在持久化模块中。持久性模块中还有另一个类,它通过在应用程序初始化时调用where is holdingAppDependecyHeper
来实现并返回 UserContextService 的具体实例。ApplicationContextAware
appContext.getBean('userContextService')
appContext
ApplicationContext
6) 现在我们不想在持久性模块中公开 Spring Security 类(因为这里没有上下文),因此上面的安排是通过调用getBean() method of applicationContext
持久层类来通过服务获取当前用户信息AppDependencyHelper
。然后使用此信息更新审计字段 createdBy 和 modifiedBy 使用EntityListener.
7) 实际应用程序仅使用单个ApplicationContext
,其中持久层类和 Web 控制器都加载在一个 Spring 上下文中。
8) 应用程序运行时一切正常。但是,当我们的集成测试运行时,调用appContext.getBean('userContextService')
失败并抛出NosuchBeanDefinitionException
,因为它无法找到名为“userContextService”的 bean
9)现在最后是位于com.mycompany.persistence.embeddeddb
包中的集成测试代码(仅给出相关细节):
现在的问题:
1)为什么它无法检索bean?我尝试添加com.mycompany.services
如下
@ComponentScan({"com.mycompany.persistence","com.mycompany.services"})
但无济于事。
2)通过阅读我得到的任何内容,我能够理解的是,@ContextConfiguration
需要提供 XML 文件或带注释的类或 WebApplicationInitializers(在我的情况下,因为我们只有一个 ApplicationContext)才能ApplicationContext
从 @Configuration 类创建一个。但是我不能这样做,因为 maven 开始抱怨循环依赖,这是正确的,因为我的@Service
注释类 UserContextServiceImpl
位于 web-services 模块中,该模块依赖于已经编写测试用例类的 web-persistence 模块。
3) 我能想到的唯一解决方案是将所有集成测试类移动到 web-services 模块,这样我就可以告诉@ConfigurationContext
它应该从中创建的所有类。ApplicationContext
对吗?
最后一点:当我运行测试时,ApplicationContext
该类是类型。GenericApplciationContext
当我运行应用程序时,它显然AnnotatedEmbeddedWebApplicationContext
请让我知道是否有解决此问题的方法?
java - Spring上下文层次结构中的bean销毁顺序
说当 Spring 上下文层次结构关闭时,没有保证 bean 被销毁的顺序是否正确?例如,子上下文中的 bean 将在父上下文之前被销毁。从一个最小的例子来看,上下文的破坏似乎在上下文之间完全不协调(很奇怪)。两个上下文都注册了一个关闭钩子,稍后将在不同的线程中执行。
给出输出:
有没有办法强制以“正确”的顺序关闭上下文?
spring - 与纯 @ContextConfiguration 相比,使用 @ContextHierarchy 有什么优势
嗨,我不明白使用 @ContextHierarchy 有什么好处,如下所示:
过度使用带有位置参数的单个 @ContextConfiguration,如下所示:
在每种情况下,应用程序上下文在不同的 junit 测试类之间共享。
java - 从 Spring Framework 4.2.9 升级到 4.3+ 时的自定义 ContextConfiguration Loader 问题
在将 Spring Framework spring-test 依赖项从 4.2.9 升级到 4.3.9 后,我在运行集成测试时遇到了一些问题。
我正在使用一个 ContextConfiguration 类,它实现了 spring 测试SmartContextLoader
,它允许我加载由配置文件拆分的不同 .xml 配置文件。根据当前的 spring 配置文件,它将运行该配置文件的特定 bean。
我ContextConfigurationLoader
在版本中运行得非常好,4.2.9
但是在升级到版本之后4.3
,我正在努力解决这个问题。
我包括ContextConfigurationLoader
我在集成测试中创建的,就像这样。
长这样ContextConfigurationLoader
,
最后,这是我尝试运行测试后得到的错误响应。
感谢您的帮助,如果您需要更多信息,请告诉我。
我发现的一种解决方案是将所有 .xml 配置文件包含在一个文件中并使用这样的@ContextConfiguration
注释。
但这需要对测试之外的其余代码进行一些其他更改。这也无助于解释为什么我当前的实现在最新的 Spring Framework 弹簧测试版本上不起作用。
spring-boot - 在 IT 测试中使用带有 @ContextConfiguration 的 RestTemplateBuilder
我在 Spring Boot 应用程序中使用带有 @ContextConfiguration 的 RestTemplateBuilder 时遇到了问题(我尝试添加 @SpringBootTest、@RunWith(SpringRunner.class) 注释但没有任何运气)。
任何帮助表示赞赏。这是背景:
我对我的班级进行了如下注释:
RestClient 类将 RestTemplateBuilder 自动装配为:
MyService 类自动装配 RestClient。当我尝试使用@ContextConfiguration
with加载应用程序SpringBootContextLoader
时,出现以下错误:
groovy - 使用 @ContextHierarchy 的 Groovy 测试类
我将 Groovy 用于我的 Spring 应用程序,并尝试在我的测试中使用多个 XML bean 配置。我尝试使用@ContextHierarchy
但以下用法示例不起作用:
我也试过:
但效果不佳。
据我了解,Groovy 不喜欢“{”“}”,因为它的含义不同......?
如何在定义了两个配置 xml 的 groovy 中编写 Testclass?
java - ContextConfigLocation java 配置
我对 java 和 spring 还是很陌生,在一些与上下文相关的主题上我仍然有一些麻烦。我正在尝试从属性文件加载我的上下文配置文件。我想将我的 spring 3 应用程序升级到 spring 4。下面的配置以前工作正常,但现在我收到错误:
配置文件:
web.xml
CustomServletListener.java
servlet.properties
我发现在我的侦听applicationContext.xml
器运行之前分配给参数。contextConfigLocation
我是否理解正确,因为 spring 4 dispatcherServlet 现在分配了 contextConfigLocation 的默认值(如果未定义)?你能给我任何想法,我如何在不将整个配置移动到 java 类的情况下实现这一点?
xml - web xml spring中contextconfiglocation的用途是什么?
ContextConfigLocation
在 Spring 中, and的目的是什么InternalResourceViewResolver
?我没有得到这些课程的目的。
java - 无法识别 @ContextConfiguration 的参数类
在下面的测试类中
编译器在行中突出显示参数类
作为一个错误。类 CDPlayerConfing 很容易找到。它被标记为 Config 类
我错过了一些进口吗?