복붙노트

[SPRING] 스프링 부트를 사용하지 않고 스프링 휴식 서비스 만들기

SPRING

스프링 부트를 사용하지 않고 스프링 휴식 서비스 만들기

나는 REEST 서비스 https://spring.io/guides/gs/rest-service/를 만들기 위해 spring.io의 Getting Started 튜토리얼을 따라 갔다. 문제는이 튜토리얼에서는 스프링 부트를 사용하여 Tomcat이 임베드 된 독립 실행 형 항아리를 만드는 방법 만 설명합니다.

이미 존재하는 Tomcat 인스턴스에 전개 할 전쟁을 생성하기 위해 처음부터 프로젝트를 생성하는 방법이 있습니까?

추신 : 나는 이전에 쓰레드 Spring RESTful Service를 WAR와 같이 stackoverflow의 Tomcat에서 JAR 대신에 매우 같은 문제를 발견했다. 문제는 허용 된 답변과 제안이 내 문제를 정확히 해결하지 못한다는 것입니다. 독립 실행 형 응용 프로그램 스프링 부트 프로젝트를 수정하여 외부 톰캣 컨테이너에서 작동하지만 '깨끗한'솔루션으로 스프링 부트가 전혀 필요하지 않습니다. (정확히 어떻게 여기에 행동하는지, 아직 stackoverflow 꽤 새로운 중인지 모르겠다. 나는 새로운 질문을 여는 올바른 절차입니다 희망).

해결법

  1. ==============================

    1.나머지 컨트롤러를 생성하기 위해 스프링 부트가 필요하지 않습니다.

    나머지 컨트롤러를 생성하기 위해 스프링 부트가 필요하지 않습니다.

    MVC 설정 방법에 대한 스프링 프레임 워크 문서를 따르십시오. https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#spring-web

    MVC 설정 (DispatcherServlet)은 스프링 버전에 따라 다르며 xml을 사용하거나 프로그래밍 방식으로 설정할 수 있습니다. https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-servlet

    이 설정이 완료되면 애플리케이션에 나머지 컨트롤러를 추가 할 수 있습니다. 나머지 컨트롤러 (@RestController annotation)는 @ResponseBody와 @Controller를 결합하는 스테레오 타입 주석이며 컨트롤러는 뷰를 반환하는 대신 응답 본문에 객체를 반환합니다.

    이것은 제가 위에서 말한 것을 설명하는 완벽한 예입니다 : http://www.programming-free.com/2014/01/spring-mvc-40-restful-web-services.html

  2. ==============================

    2.다음은 또 다른 예입니다.

    다음은 또 다른 예입니다.

    디렉토리 레이아웃 :

    .
    ├── ./pom.xml
    └── ./src
        └── ./src/main
            ├── ./src/main/java
            │   └── ./src/main/java/biz
            │       └── ./src/main/java/biz/tugay
            │           └── ./src/main/java/biz/tugay/restfulspring
            │               └── ./src/main/java/biz/tugay/restfulspring/config
            │                   ├── ./src/main/java/biz/tugay/restfulspring/config/RestfulHello.java
            │                   └── ./src/main/java/biz/tugay/restfulspring/config/WebAppInitalizer.java
            └── ./src/main/webapp
                └── ./src/main/webapp/WEB-INF
                    └── ./src/main/webapp/WEB-INF/web.xml
    

    Pom.hml

    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    
        <modelVersion>4.0.0</modelVersion>
        <groupId>biz.tugay</groupId>
        <artifactId>restfulSpring</artifactId>
    
        <packaging>war</packaging>
        <version>1.0-SNAPSHOT</version>
        <name>restfulSpring Maven Webapp</name>
    
        <url>http://maven.apache.org</url>
    
        <dependencies>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.0.1</version>
                <scope>provided</scope>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>4.3.16.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>4.3.16.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>4.3.16.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>4.3.16.RELEASE</version>
            </dependency>
        </dependencies>
    
        <build>
            <finalName>restfulSpring</finalName>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.1</version>
                    <configuration>
                        <source>1.7</source>
                        <target>1.7</target>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.eclipse.jetty</groupId>
                    <artifactId>jetty-maven-plugin</artifactId>
                    <version>9.2.1.v20140609</version>
                </plugin>
            </plugins>
        </build>
    
    </project>
    

    을 포함한다.

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app 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"
             version="3.0">
    </web-app>
    

    WebAppInitalizer.java

    package biz.tugay.restfulspring.config;
    
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.EnableWebMvc;
    import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
    
    @Configuration
    @EnableWebMvc
    @ComponentScan("biz.tugay.restfulspring")
    public class WebAppInitalizer extends AbstractAnnotationConfigDispatcherServletInitializer {
    
        @Override
        protected String[] getServletMappings() {
            return new String[]{"/*"};
        }
    
        @Override
        protected Class<?>[] getRootConfigClasses() {
            return new Class<?>[]{WebAppInitalizer.class};
        }
    
        @Override
        protected Class<?>[] getServletConfigClasses() {
            return new Class[0];
        }
    }
    

    RestfulHello.java

    package biz.tugay.restfulspring.config;
    
    import org.springframework.http.HttpHeaders;
    import org.springframework.http.HttpStatus;
    import org.springframework.http.MediaType;
    import org.springframework.http.ResponseEntity;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController(value = "/")
    public class RestfulHello {
    
        @RequestMapping(value = "hello")
        public ResponseEntity<String> sayHello() {
            final HttpHeaders httpHeaders= new HttpHeaders();
            httpHeaders.setContentType(MediaType.APPLICATION_JSON);
            return new ResponseEntity<String>("{\"msg\": \"Hello World\"}", httpHeaders, HttpStatus.OK);
        }
    }
    

    빌드 및 실행 :

    mvn clean install
    mvn jetty:start
    

    테스트:

    > GET /hello HTTP/1.1
    > Host: localhost:8080
    > User-Agent: insomnia/5.15.0
    > Accept: */*
    < HTTP/1.1 200 OK
    < Date: Fri, 27 Apr 2018 00:06:07 GMT
    < Content-Type: application/json
    < Content-Length: 22
    < Server: Jetty(9.2.1.v20140609)
    

    받은 콘텐츠 :

    {
        "msg": "Hello World"
    }
    

    여기에서 다운로드 할 수 있습니다.

  3. from https://stackoverflow.com/questions/29416804/creating-spring-rest-services-without-using-spring-boot by cc-by-sa and MIT license