web-dev-qa-db-fra.com

Comment faire plusieurs mappages d'URL (alias) dans Spring Boot

en particulier

Je veux faire un mappage d'URL multiple (en d'autres termes des alias) dans Spring Boot

en détail

Dans mon application Spring Boot Customer Controller la classe a mappé principalement sur le /customer URL comme ci-dessous, je veux créer des alias facilement modifiables

@Controller
@RequestMapping(value = "/customer")
public class CustomerController{

Dans mon application Spring normale où je fais le mappage dans le XML, je peux faire le mappage d'URL comme ci-dessous.

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
   <property name="mappings">
    <props>
       <prop key="/customer.htm">customerController</prop>
       <prop key="/tester.htm">customerController</prop>
     </props>
   </property>
</bean>

<bean id="customerController" 
    class="com. ... .controller.CustomerController" />

Spring boot, les configurations des fichiers de propriétés sont utiles la plupart du temps car la configuration automatique fonctionne sous le toit.

  1. Existe-t-il un moyen de faire de même en utilisant les fichiers de propriétés.
  2. Quelle est la meilleure pratique à suivre lors d'un mappage d'URL au démarrage de printemps que je peux changer facilement après la compilation.

Je me suis beaucoup fatigué pour trouver ça. Mais à la fin, je me suis retrouvé dans l'aide de la communauté SO. Aidez-moi à ce sujet.

13
Faraj Farook

Si vous souhaitez chasser le mappage d'un fichier prop, vous pouvez le faire comme ci-dessous

Dans votre application.properties, ajoutez la paire valeur/clé

url.mapping : /test/sample

Sur le contrôleur, vous pouvez effectuer les opérations suivantes:

@Controller
@RequestMapping(value = { "${url.mapping}" })
public class CustomerController{

Au lieu de fournir dans le fichier prop, si vous fournissez le url.mapping comme un jvm arg, alors vous n'avez pas à recompiler si vous changez la valeur, il suffit de redémarrer (ce que j'espère que vous pouvez faire, je ne l'ai pas essayé moi-même) devrait faire l'affaire.

Pour plusieurs mappages, vous devrez en ajouter un par mappage et mapper cela dans le contrôleur comme ci-dessous.

@Controller
@RequestMapping(value = { "${url.mapping}","${url.mapping.two}" })
public class CustomerController{
15
minion

Jetez un oeil à l'exemple this .

La meilleure façon de mapper l'url est de le faire dans le contrôleur avec des annotations.

Fondamentalement:

@RestController
public class HelloController {

    @RequestMapping("/")
    public String index() {
        return "Greetings from Spring Boot!";
    }

}

À mon humble avis, la meilleure pratique consiste à utiliser un mappage pour le contrôleur et un pour chaque méthode:

    @RestController
    @RequestMapping("/Hello")
    public class HelloController {

        @RequestMapping("/")
        public String index() {
            return "Greetings from Spring Boot!";
        }

        @RequestMapping("/otherMapping")
        public String otherMapping() {
            return "Greetings from Spring Boot!";
        }
    }

De cette façon, les URL ressembleront à: localhost:8080/Hello et localhost:8080/Hello/otherMapping

Modifier:

Pour plusieurs mappages, vous pouvez utiliser:

@RequestMapping({ "/home", "/contact" })
13
Evgeni Dimitrov