繁体   English   中英

如何在没有@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 文件中。
我创建了一个简单的 controller,其方法仅返回"OK" ,因此我可以使用 Postman 运行一些测试。
不幸的是,没有创建端点。

我做了一些研究,发现我需要添加“上下文”标签,组件扫描指向 controller package 才能正常工作。
但我目前的实施还不足以让它发挥作用:

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

我的 controller 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 注释主要的@SpringBootApplication 如果是,我错过了什么? 它是在我的 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>

乐:

<mvc:annotation-driven>类似于<context:component-scan>它们注册了所有注解了@Controller、@Component、@Service、@Repository 和@Bean 的bean ...

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM