首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在木星的ParameterResolver中注入春豆

在木星的ParameterResolver中注入春豆
EN

Stack Overflow用户
提问于 2022-04-14 04:55:26
回答 1查看 264关注 0票数 1

试图让Spring (DataSource)自动进入JUnit ParameterResolver。但到了春天,DataSource还没有被注射。

我已经注册了SpringExtension,并提供了上下文位置(aaspire-test-datasource-components.xml)来加载ApplicationContext

代码语言:javascript
复制
@ContextConfiguration(locations={"classpath:spring-config/aaspire-test-datasource- 
 components.xml"})
@ExtendWith(SpringExtension.class)
public class gdnContextResolver implements ParameterResolver
{   
    @Autowired
    private DataSource dataSource;

    @Override
    public boolean supportsParameter(ParameterContext parameterContext, 
      ExtensionContext extensionContext) throws ParameterResolutionException {
       return parameterContext.getParameter().getType() == gdnContext.class;
    }

    @Override
    public Object resolveParameter(ParameterContext parameterContext, 
     ExtensionContext extensionContext) throws ParameterResolutionException {
     
      try {
        return  SpringBatchJobUtil.createJobExecutionGdnContext(dataSource);
     } catch (Exception e) {            
        throw new ParameterResolutionException(ExceptionUtil.getMessageText(e));
     }    
      
   }
}
EN

回答 1

Stack Overflow用户

发布于 2022-05-30 10:26:39

您不能通过@ExtendWith注册扩展名。

此外,Spring注释(如@ContextConfiguration )不能应用于扩展,也不能将Spring组件自动添加到扩展中。

因此,您需要删除@ExtendWith@ContextConfiguration声明,而不是将DataSource自动加载到扩展中的字段中,您需要使用SpringExtension来检索“当前测试”的ApplicationContext

您可以在您的resolveParameter()实现中实现后者,如下所示。

代码语言:javascript
复制
DataSource dataSource = SpringExtension.getApplicationContext(extensionContext).getBean(DataSource.class);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71866678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档