{"id":142,"date":"2024-01-04T21:31:17","date_gmt":"2024-01-04T20:31:17","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=142"},"modified":"2024-01-08T21:34:59","modified_gmt":"2024-01-08T20:34:59","slug":"kontext-pfad-einer-spring-webanwendung-anpassen","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=142","title":{"rendered":"Kontext-Pfad einer Spring-Webanwendung anpassen"},"content":{"rendered":"\n<p>In Spring Boot erm\u00f6glicht die Konfiguration des Kontext-Pfads die Definition des Basis-URL-Pfads f\u00fcr Ihre Webanwendung. Dies ist n\u00fctzlich, wenn Sie mehrere Anwendungen auf dem gleichen Webserver hosten oder einfach den Standard-Kontextpfad \u00e4ndern m\u00f6chten. In diesem Artikel werden verschiedene Methoden zur \u00c4nderung des Kontext-Pfads in einer Spring Boot Webanwendung erl\u00e4utert.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hintergrund<\/h2>\n\n\n\n<p>Der Kontext-Pfad ist der Teil der URL, der auf den Anwendungsrouten basiert. Standardm\u00e4\u00dfig wird der Kontext-Pfad in Spring Boot auf <code>\/<\/code> gesetzt. Das bedeutet, dass Ihre Anwendung unter <code>http:\/\/localhost:8080\/<\/code> erreichbar ist. Wenn Sie jedoch den Kontext-Pfad \u00e4ndern m\u00f6chten, um beispielsweise eine Unteranwendung auf einer speziellen URL zu hosten, m\u00fcssen Sie bestimmte Schritte unternehmen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">application.properties<\/h3>\n\n\n\n<p>Die einfachste M\u00f6glichkeit, den Kontext-Pfad in einer Spring Boot Anwendung zu \u00e4ndern, ist die Verwendung einer Eigenschaften-Datei. Spring Boot verwendet normalerweise die Datei <code>application.properties<\/code> oder <code>application.yml<\/code>, um Konfigurationseinstellungen zu speichern. Sie k\u00f6nnen die <code>server.servlet.context-path<\/code> Eigenschaft in dieser Datei setzen, um den Kontext-Pfad zu \u00e4ndern.<\/p>\n\n\n\n<p>Hier ist ein Beispiel in einer <code>application.properties<\/code> Datei:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">server.servlet.context-path=\/meine-anwendung<\/code><\/span><\/pre>\n\n\n<p>Oder in einer <code>application.yml<\/code> Datei:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">server:\n  servlet:\n    context-path: \/meine-anwendung<\/code><\/span><\/pre>\n\n\n<p>Nachdem Sie diese Einstellung hinzugef\u00fcgt haben, wird Ihre Anwendung unter <code>http:\/\/localhost:8080\/meine-anwendung\/<\/code> erreichbar sein.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Programmatische Konfiguration<\/h3>\n\n\n\n<p>Eine weitere M\u00f6glichkeit, den Kontext-Pfad zu \u00e4ndern, besteht darin, dies programmatisch in Ihrem Spring Boot Hauptanwendungsprogramm zu tun. Dazu k\u00f6nnen Sie eine Klasse erstellen, die von <code>ServletRegistrationBean<\/code> erbt und die <code>setUrlMappings<\/code> Methode \u00fcberschreibt.<\/p>\n\n\n\n<p>Hier ist ein Beispiel:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">import<\/span> org.springframework.boot.web.servlet.ServletRegistrationBean;\n<span class=\"hljs-keyword\">import<\/span> org.springframework.context.annotation.Bean;\n<span class=\"hljs-keyword\">import<\/span> org.springframework.context.annotation.Configuration;\n\n@Configuration\npublic <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ServletConfig<\/span> <\/span>{\n\n    @Bean\n    public ServletRegistrationBean myServlet() {\n        ServletRegistrationBean registration = <span class=\"hljs-keyword\">new<\/span> ServletRegistrationBean&lt;&gt;(<span class=\"hljs-keyword\">new<\/span> MyServlet(), <span class=\"hljs-string\">\"\/meine-anwendung\/*\"<\/span>);\n        <span class=\"hljs-keyword\">return<\/span> registration;\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel haben wir <code>MyServlet<\/code> erstellt und den Kontext-Pfad auf <code>\/meine-anwendung<\/code> gesetzt. Beachten Sie, dass der Pfad in der <code>ServletRegistrationBean<\/code> mit einem Sternchen (<code>\/*<\/code>) endet, um alle Anfragen unter diesem Pfad abzudecken.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Verwendung von <code>application.properties<\/code> in WAR-Dateien<\/h3>\n\n\n\n<p>Wenn Sie Ihre Spring Boot Anwendung als WAR-Datei in einem externen Servlet-Container bereitstellen m\u00f6chten, k\u00f6nnen Sie den Kontext-Pfad in Ihrer <code>application.properties<\/code> Datei wie im ersten Abschnitt beschrieben konfigurieren. Beachten Sie jedoch, dass dies nur funktioniert, wenn Ihr externer Servlet-Container die Spring Boot Eigenschaften richtig auswertet.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Umgebungsvariablen und Befehlszeilenargumente<\/h3>\n\n\n\n<p>Eine weitere Methode zur Konfiguration des Kontext-Pfads besteht darin, Umgebungsvariablen oder Befehlszeilenargumente zu verwenden. Dies erm\u00f6glicht es Ihnen, den Kontext-Pfad zur Laufzeit festzulegen, ohne die Anwendungsquelle \u00e4ndern zu m\u00fcssen.<\/p>\n\n\n\n<p>Um den Kontext-Pfad \u00fcber eine Umgebungsvariable zu setzen, k\u00f6nnen Sie Folgendes tun:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">export SERVER_SERVLET_CONTEXT_PATH=\/meine-anwendung\njava -jar meine-anwendung.jar<\/code><\/span><\/pre>\n\n\n<p>Oder Sie k\u00f6nnen es direkt als Befehlszeilenargument an die Anwendung \u00fcbergeben:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">java -jar meine-anwendung.jar --server.servlet.context-path=\/meine-anwendung<\/code><\/span><\/pre>\n\n\n<p>Beachten Sie, dass die Methode zur Verwendung von Umgebungsvariablen oder Befehlszeilenargumenten zur Laufzeit die Flexibilit\u00e4t bietet, den Kontext-Pfad je nach Umgebung oder Deployment-Anforderungen anzupassen, ohne die Quellcode- oder Konfigurationsdateien \u00e4ndern zu m\u00fcssen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">application.properties in einem externen Verzeichnis<\/h3>\n\n\n\n<p>Eine weitere M\u00f6glichkeit zur Konfiguration des Kontext-Pfads besteht darin, eine externe <code>application.properties<\/code> Datei in einem bestimmten Verzeichnis zu platzieren und Spring Boot so zu konfigurieren, dass es diese Datei verwendet. Dies kann n\u00fctzlich sein, wenn Sie eine Anwendung in verschiedenen Umgebungen mit unterschiedlichen Kontext-Pfaden bereitstellen m\u00f6chten.<\/p>\n\n\n\n<p>Zuerst erstellen Sie eine <code>application.properties<\/code> Datei mit Ihrer Kontextpfad-Konfiguration, z.B.:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">server.servlet.context-path=\/meine-anwendung<\/code><\/span><\/pre>\n\n\n<p>Speichern Sie diese Datei in einem externen Verzeichnis, z.B. <code>\/etc\/meine-anwendung\/<\/code>.<\/p>\n\n\n\n<p>Dann k\u00f6nnen Sie Spring Boot so konfigurieren, dass es diese externe <code>application.properties<\/code> Datei verwendet, indem Sie die Umgebungsvariable <code>spring.config.location<\/code> setzen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">export<\/span> spring.config.location=file:<span class=\"hljs-regexp\">\/etc\/m<\/span>eine-anwendung\/\njava -jar meine-anwendung.jar<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Dies bewirkt, dass Spring Boot nach der <code>application.properties<\/code> Datei im angegebenen Verzeichnis sucht und die darin enthaltenen Einstellungen verwendet.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Anwendungseigene Konfigurationsklasse<\/h3>\n\n\n\n<p>Eine weitere M\u00f6glichkeit, den Kontext-Pfad zu konfigurieren, besteht darin, eine benutzerdefinierte Konfigurationsklasse zu erstellen, die von <code>EmbeddedServletContainerCustomizer<\/code> erbt. Dies erm\u00f6glicht es Ihnen, den Kontext-Pfad auf programatische Weise festzulegen.<\/p>\n\n\n\n<p>Hier ist ein Beispiel:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">import<\/span> org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;\n<span class=\"hljs-keyword\">import<\/span> org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;\n<span class=\"hljs-keyword\">import<\/span> org.springframework.stereotype.Component;\n\n@Component\npublic <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">CustomContainer<\/span> <span class=\"hljs-title\">implements<\/span> <span class=\"hljs-title\">EmbeddedServletContainerCustomizer<\/span> <\/span>{\n\n    @Override\n    public <span class=\"hljs-keyword\">void<\/span> customize(ConfigurableEmbeddedServletContainer container) {\n        container.setContextPath(<span class=\"hljs-string\">\"\/meine-anwendung\"<\/span>);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In dieser Klasse haben wir die <code>customize<\/code> Methode \u00fcberschrieben und den Kontext-Pfad auf <code>\/meine-anwendung<\/code> gesetzt. Beachten Sie, dass Sie diese Klasse auch verwenden k\u00f6nnen, um andere Container-Einstellungen anzupassen, wie z.B. den Port oder die SSL-Konfiguration.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Verwendung von <code>application.yml<\/code> oder <code>application.properties<\/code> in einem externen Verzeichnis<\/h3>\n\n\n\n<p>\u00c4hnlich wie bei der Verwendung von <code>application.properties<\/code> in einem externen Verzeichnis k\u00f6nnen Sie auch eine externe <code>application.yml<\/code> oder <code>application.properties<\/code> Datei verwenden, um den Kontext-Pfad zu konfigurieren. Die Vorgehensweise ist \u00e4hnlich wie zuvor beschrieben, jedoch verwenden Sie stattdessen die Umgebungsvariable <code>spring.config.location<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">export<\/span> spring.config.location=file:<span class=\"hljs-regexp\">\/etc\/m<\/span>eine-anwendung\/\njava -jar meine-anwendung.jar<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Spring Boot sucht dann nach der angegebenen <code>application.yml<\/code> oder <code>application.properties<\/code> Datei im externen Verzeichnis und verwendet die darin enthaltenen Einstellungen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n\n\n\n<p>Das \u00c4ndern des Kontext-Pfads in einer Spring Boot Webanwendung kann je nach Ihren Anforderungen und Pr\u00e4ferenzen auf verschiedene Arten erfolgen. Sie k\u00f6nnen dies in Ihrer <code>application.properties<\/code> oder <code>application.yml<\/code> Datei, programmatisch in einer Konfigurationsklasse, \u00fcber Umgebungsvariablen, Befehlszeilenargumente oder externe Konfigurationsdateien tun. Die Wahl der Methode h\u00e4ngt von Ihren spezifischen Anforderungen und Ihrer Deployment-Strategie ab.<\/p>\n\n\n\n<p>Unabh\u00e4ngig von der Methode, die Sie w\u00e4hlen, erm\u00f6glicht Ihnen die Flexibilit\u00e4t von Spring Boot, den Kontext-Pfad Ihrer Webanwendung einfach anzupassen, um Ihre Anwendungsbed\u00fcrfnisse zu erf\u00fcllen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Spring Boot erm\u00f6glicht die Konfiguration des Kontext-Pfads die Definition des Basis-URL-Pfads f\u00fcr Ihre Webanwendung. Dies ist n\u00fctzlich, wenn Sie mehrere Anwendungen auf dem gleichen Webserver hosten oder einfach den Standard-Kontextpfad \u00e4ndern m\u00f6chten. In diesem Artikel werden verschiedene Methoden zur \u00c4nderung des Kontext-Pfads in einer Spring Boot Webanwendung erl\u00e4utert. Hintergrund Der Kontext-Pfad ist der Teil [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-142","post","type-post","status-publish","format-standard","hentry","category-spring"],"_links":{"self":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/142","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=142"}],"version-history":[{"count":2,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/142\/revisions"}],"predecessor-version":[{"id":144,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/142\/revisions\/144"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=142"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=142"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=142"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}