Ich habe das Tutorial Erste Schritte auf spring.io zum Erstellen von REEST-Diensten https://spring.io/guides/gs/rest-service/ befolgt . Das Problem ist, dass in diesem Tutorial nur erklärt wird, wie ein eigenständiges Laufglas mit Tomcat erstellt wird, das mit Spring Boot eingebettet ist.
Gibt es eine Möglichkeit, ein Projekt von Grund auf neu zu erstellen, um einen Krieg zu erzeugen, der beispielsweise auf einer bereits vorhandenen Tomcat-Instanz bereitgestellt werden soll?
PS: Ich hatte in Tomcat einen früheren Thread Spring RESTful Service als WAR anstelle von JAR für Stackoverflow gefunden, der sich auf dasselbe Problem bezog. Das Problem ist, dass die akzeptierten Antworten und Vorschläge mein Problem nicht genau lösen, da ich nicht nach Möglichkeiten suche, das eigenständige App-Spring-Boot-Projekt so zu ändern, dass es auf einem externen Tomcat-Container funktioniert, aber eine finden möchte 'sauberere' Lösung ohne Federstiefel. (Ich bin mir nicht ganz sicher, wie ich mich hier verhalten soll, da ich bei Stackoverflow noch ziemlich neu bin. Ich hoffe, dass das Öffnen einer neuen Frage das richtige Verfahren ist.)
Antworten:
Sie benötigen Spring Boot nicht, um einen Rest-Controller zu erstellen.
Befolgen Sie die Dokumentation zum Spring Framework zum Einrichten von MVC unter https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#spring-web
Das MVC-Setup (das
DispatcherServlet
) hängt von Ihrer Spring-Version ab. Sie können entweder XML verwenden oder programmgesteuert einrichten: https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc -ServletSobald dies eingerichtet ist, können Sie Ihrer Anwendung einen Rest-Controller hinzufügen. Beachten Sie, dass ein Rest-Controller (die
@RestController
Annotation) eine stereotype Annotation ist, die kombiniert@ResponseBody
und@Controller
mit anderen Worten, der Controller ein Objekt im Antworttext zurückgibt, anstatt eine Ansicht zurückzugeben.Dies ist ein perfektes Beispiel, das erklärt, was ich oben gesagt habe: http://www.programming-free.com/2014/01/spring-mvc-40-restful-web-services.html
quelle
Hier ist ein weiteres Beispiel:
Verzeichnislayout:
pom.xml
<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>
web.xml
<?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 @RequestMapping(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); } }
Erstellen und ausführen:
Prüfung:
> 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)
Inhalt erhalten:
{ "msg": "Hello World" }
quelle