首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JAX、Spring和ServletConfig:如何在Configurator中访问ServletConfig

JAX、Spring和ServletConfig:如何在Configurator中访问ServletConfig
EN

Stack Overflow用户
提问于 2018-05-28 07:12:13
回答 1查看 472关注 0票数 0

我很难把一个javax.servlet.ServletConfig放到一个带有org.springframework.context.annotation.Configuration注释的类中。

我的团队决定我们应该使用spring进行依赖注入,我正在尝试使用它迁移我们的一个简单的Rest服务。

我的限制是:

  • JAX:我们有几个REST服务实现了JAX,我们并不想改变这一点。
  • 不绑定到JAX的特定实现(泽西& RESTEasy对我们来说很好,我们可以在不改变底层代码的情况下从一个转换到另一个)。
  • 从spring导入尽可能少的依赖关系:目前我只从spring项目导入org.springframework:spring-context
  • 没有API破坏:不推荐使用,但是服务应该在转换期间继续工作,使用我们以前的处理方法。
  • 服务的web.xml中定义了一个字符串参数。我需要得到它,用它实例化一个Bean,并在代码中的几个位置注入结果bean。
  • 我不想和Spring /MVC/.因为服务已经起作用了,我只想要依赖注入部分。

我已经拥有的是:

代码使用javax.ws.rs.core.Application,类如下所示:

代码语言:javascript
复制
public class MyApplication extends Application {

  @Context
  private ServletConfig cfg;

  public DSApplication() {
  }

  @Override
  public Set<Class<?>> getClasses() {
      return new HashSet<>();
  }

  @Override
  public Set<Object> getSingletons() {
    Set<Object> set = new HashSet<>();
    String injectionStr = cfg.getInitParameter("injection");
    boolean injection = false;
    if (null != injectionStr && !injectionStr.isEmpty()) {
        injection = Boolean.valueOf(injectionStr);
    }

    if (injection) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(
                DSServiceProducer.class,
                CContextBeanProvider.class
        );
        IDSService service = context.getBean(IDSService.class);
        set.add(service);
    } else {
        set.add(new DSService()); //Old way
    }
    return set;
  }
}

我需要CContextBeanProvider中的servlet配置,如下所示:

代码语言:javascript
复制
@Configuration
public class CContextBeanProvider {

  private ServletConfig cfg; // How to get this here ?

  @Bean
  public CContextBean cContextBean() {
    String bean = cfg.getInitParameter("cpuContext");
    return new CContextBean(bean);
  }
}

CContextBean是从服务的web.xml中找到的字符串初始化的设置bean。

  • 有可能吗?
  • 你知道怎么做吗?
  • 知道我们在Tomcat的基础上运行,CDI会更容易吗?(如果我需要在CDI中使用tomcat,我已经找到了this )
EN

回答 1

Stack Overflow用户

发布于 2018-05-29 06:24:32

你能试着把所有的球衣CDI相关的罐子添加到你的应用程序中吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50560948

复制
相关文章

相似问题

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