【问题标题】:Spring boot Consider defining a bean named 'servletContext' in your configurationSpring boot 考虑在你的配置中定义一个名为 'servletContext' 的 bean
【发布时间】:2019-03-11 10:54:51
【问题描述】:

我有一个项目有几个模块,是tomcat项目。我需要转换成spring boot项目。

这是一个带有跟随 bean 的 xml 文件: 我用过@ImportResource("classpath:xxx.xml")。

这里抛出异常:


应用程序启动失败


说明:

xxxService 中构造函数的参数 0 需要一个名为“servletContext”的 bean,但找不到。

行动:

考虑在您的配置中定义一个名为“servletContext”的 bean。

我几乎三天都不知道这个问题。如果您有这方面的经验,请帮助我,非常感谢!

【问题讨论】:

  • 下面是关于bayeux的xml文件选项
  • scaAnnotationConfigApplicationContext :上下文初始化期间遇到异常 - 取消刷新尝试:org.springframework.beans.factory.UnsatisfiedDependencyException:创建 com.citi.pf.realtime.PFRealtimeServicesApplication 中定义的名称为“bayeuxServer”的 bean 时出错:通过方法'bayeuxServer'参数0表示的不满足的依赖关系;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有可用的“javax.servlet.ServletContext”类型的合格 bean:
  • 预计至少有 1 个符合自动装配候选资格的 bean。依赖注释:{}
  • 我已经删除了 xml 文件并在 cometd 的应用程序中创建了 bean 方法。以下是错误。

标签: spring-boot servlets cometd bayeux


【解决方案1】:

只需实现ServletContextAware接口,而不是直接自动装配ServletContext

@Service
public class DummyService implements ServletContextAware {

    ServletContext servletContext;

    @Override
    public void setServletContext(ServletContext servletContext) {
        this.servletContext = servletContext;
    }
}

【讨论】:

    【解决方案2】:

    【讨论】:

    • 您好,我已尝试关注此文档。但是也有同样的问题,我猜是spring boot servlet初始化失败了。详细错误是:
    • scaAnnotationConfigApplicationContext :上下文初始化期间遇到异常 - 取消刷新尝试:org.springframework.beans.factory.UnsatisfiedDependencyException:创建文件 [ALocateCometDService.class] 中定义的名称为“ACometDService”的 bean 时出错:跨度>
    • 通过构造函数参数0表示的不满足的依赖关系;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建类路径资源 [Acontext.xml] 中定义的名称为“bayeux”的 bean 时出错:使用键 [Acontext.xml] 设置 bean 属性“options”时无法解析对 bean“servletContext”的引用TypedStringValue:值[javax.servlet.ServletContext],目标类型[null]];嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'servletContext' available
    • CometD Spring Boot 示例确实有效。我建议您从那里开始:复制/粘贴它并使其在您的环境中工作。然后你慢慢改变它以适应你的需要。 StackOverflow 不是调试故障的正确位置,因此欢迎您在 CometD 项目中打开一个问题:github.com/cometd/cometd/issues
    • 我的 Spring boot 版本是 1.15.13 ,我在 application.java 中调试,它从来没有进入任何 @bean 方法。所以我猜我的项目没有初始化 servletContext ,可能它与 Cometd 服务器没有关系。谁能帮帮我?
    猜你喜欢
    • 2019-03-16
    • 2022-09-29
    • 2022-01-19
    • 2017-03-16
    • 2017-11-14
    • 2019-01-27
    • 2021-04-04
    • 2020-05-24
    • 2022-09-28
    相关资源
    最近更新 更多