Java 带resteasy的弹簧靴-“;找不到名为requestMappingHandlerMapping“的bean的类型;错误

Java 带resteasy的弹簧靴-“;找不到名为requestMappingHandlerMapping“的bean的类型;错误,java,spring-boot,resteasy,Java,Spring Boot,Resteasy,有人知道hwo配置SpringBoot使用resteasy吗,特别是当我不需要嵌入式容器时?我们有一个独立的JBoss,需要在其中部署应用程序,但我使用Jetty容器来测试URL映射。我的build.gradle是这样的(包括aop、安全性等,仅供将来使用,希望不会影响): 我的ApplicationTests.java如下所示: @Configuration @ComponentScan(basePackages = {"..."}) // our packages to scan @


有人知道hwo配置SpringBoot使用resteasy吗,特别是当我不需要嵌入式容器时?我们有一个独立的JBoss,需要在其中部署应用程序,但我使用Jetty容器来测试URL映射。我的build.gradle是这样的(包括aop、安全性等,仅供将来使用,希望不会影响):

我的ApplicationTests.java如下所示:

@Configuration
@ComponentScan(basePackages = {"..."})     // our packages to scan
@EnableAutoConfiguration(exclude = { EmbeddedServletContainerAutoConfiguration.class })
@EnableWebMvc
@ImportResource("classpath:springmvc-resteasy.xml")
public class Application {
    public static void main(String[] args) {
        run(Application.class, args);
    }
}
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@WebAppConfiguration
@EnableAutoConfiguration
public class ApplicationTests {

    @Bean
    public EmbeddedServletContainerFactory servletContainer() {
        return new JettyEmbeddedServletContainerFactory("/", 9000);
    }

    @Test
    public void contextLoads() {
    }
}
@EnableMvc
文档说它导入了所有的处理程序映射,但是当测试运行时,我仍然收到这个错误

java.lang.IllegalStateException: could not find the type for bean named requestMappingHandlerMapping
有人知道为什么会这样,可以做什么吗?

谢谢,

Paddy

我不知道Spring Boot的具体细节,但我已经多次使用resteasy配置Spring,我怀疑它会是一样的。您必须在web.xml中连接resteasy和spring,以确定resteasy是从spring的上下文加载的

web.xml如下所示:

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

<listener>
    <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
</listener>
<listener>
    <listener-class>org.jboss.resteasy.plugins.spring.SpringContextLoaderListener</listener-class>
</listener>
<servlet>
    <servlet-name>Resteasy</servlet-name>
    <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Resteasy</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
</context-param>
<context-param>
    <param-name>resteasy.media.type.mappings</param-name>
    <param-value>html : text/html, json : application/json, xml : application/xml</param-value>
</context-param> 
<context-param>
    <param-name>resteasy.servlet.mapping.prefix</param-name>
    <param-value>/</param-value>
</context-param> 
<!--While using Spring integration set resteasy.scan to false or don't configure 
    resteasy.scan parameter at all 
<context-param>
    <param-name>resteasy.scan</param-name>
    <param-value>false</param-value>
</context-param>-->

org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
org.jboss.resteasy.plugins.spring.SpringContextLoaderListener
放松
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
放松
/*
上下文配置位置
类路径:applicationContext.xml
resteasy.media.type.mappings
html:text/html,json:application/json,xml:application/xml
resteasy.servlet.mapping.prefix
/

您可以使用RESTEasy Spring启动程序。请参见下面的操作方法。 现在谈论在没有嵌入式容器的情况下使用RESTEasy,您的意思是根本没有Servlet容器,还是将Spring Boot应用程序构建为WAR,然后将其部署到常规的独立容器?RESTEasy依赖于Servlet容器来运行,因为它的REST端点通过前端控制器Javaservlet连接到HTTP

下面是使用弹簧靴RESTEasy starter的说明

添加POM依赖项

将下面的Maven依赖项添加到Spring引导应用程序pom文件中

<dependency>
   <groupId>com.paypal.springboot</groupId>
   <artifactId>resteasy-spring-boot-starter</artifactId>
   <version>2.1.1-RELEASE</version>
   <scope>runtime</scope>
</dependency>
注册JAX-RS资源和提供者

只要将它们定义为Springbean,它们就会自动注册。请注意,JAX-RS资源可以是单例的,也可以是请求范围的,而JAX-RS提供者必须是单例的


.

您可能对此感兴趣:嗨@Erik,谢谢您的更新。我也注意到这个胶水代码丢失了,但后来发现了一个很酷的项目,我成功地完成了它,但RESTEasy 3.0.10仍然与Spring Boot 1.1.9不兼容。RELEASEgreat-happy编码!
<dependency>
   <groupId>com.paypal.springboot</groupId>
   <artifactId>resteasy-spring-boot-starter</artifactId>
   <version>2.1.1-RELEASE</version>
   <scope>runtime</scope>
</dependency>
package com.test;

import org.springframework.stereotype.Component;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@Component
@ApplicationPath("/sample-app/")
public class JaxrsApplication extends Application {
}