如何在没有@SpringBootApplication 的情况下仅使用XML 文件在Spring Boot Java 中创建REST 端点?

How to create a REST endpoint in Spring Boot Java without @SpringBootApplication, using only XML file?

我正在尝试在两个非 Web 应用程序之间实现 REST 端点,所有配置都在 XML 文件中。
我创建了一个简单的控制器,其方法只有 returns "OK",因此我可以 运行 使用 Postman 进行一些测试。
不幸的是,没有创建端点。

我做了一些研究,发现我需要添加“context”标签,组件扫描指向控制器包才能正常工作。
但是我目前的实现还不足以让它工作:

<context:component-scan base-package="com.app.REST"/>

我的控制器class是:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestController {

    @RequestMapping("/test")
    @ResponseBody
    public String test(){
        return "OK";
    }

}

我的问题是:有没有什么方法可以创建一个 REST 端点而不用 @SpringBootApplication 注释主 class?如果是,我错过了什么?它是在我的 XML 文件中还是在其他地方?

要启用 MVC 功能,您需要指示 spring 扫描您的控制器 这是通过 <mvc:annotation-driven /> 标签完成的。

此外,由于 DispatcherServlet 正在处理您的请求,因此您需要在 web.xml

中为其添加正确的配置
....
<servlet>
        <servlet-name>my-dispatcher-servlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:web-config.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcher-servlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

LE:

<mvc:annotation-driven> 类似于 <context:component-scan> 他们注册了所有注解了@Controller, @Component, @Service, @Repository and @Bean...

的bean

mvc:annotation-driven 的主要区别在于它还创建了一些额外的 bean,这些 bean 负责在 dispatcherServlet 中进行端点注册(HandlerMapping、HandlerAdapters 和一些默认的 conversionServices 需要代表您的控制器接收到的数据例如)