Cette application n'a pas de mappage explicite pour / error

108

J'ai utilisé maven pour faire le tutoriel https://spring.io/guides/gs/uploading-files/
Tous les codes que j'ai utilisés ont été copiés.

L'application peut s'exécuter, mais j'obtiens l'erreur:

Page d'erreur Whitelabel Cette application n'a pas de mappage explicite pour / error, vous voyez donc cela comme une solution de secours. Tue Jun 30 17:24:02 CST 2015 Une erreur inattendue s'est produite (type = Not Found, status = 404). Aucun message disponible

Comment puis-je y remédier?

Deng Steve
la source
a ajouté votre commentaire à l'article - vous pouvez le modifier vous-même. C'est mieux que de commenter votre propre message
Alexander

Réponses:

137

Assurez-vous que votre classe principale est dans un package racine au-dessus des autres classes.

Lorsque vous exécutez une application Spring Boot, (c'est-à-dire une classe annotée avec @SpringBootApplication), Spring analysera uniquement les classes sous votre package de classe principal.

com
   +- APP
         +- Application.java  <--- your main class should be here, above your controller classes
         |
         +- model
         |   +- user.java
         +- controller
             +- UserController.java
vignesh Subash
la source
4
Au-dessus ou au même niveau?
Martin Erlic
21
J'ai passé presque 2 heures de ma vie à comprendre cela!
Rakesh
7
J'ai essayé ça aussi. Encore une erreur. Au moins la page principale c'est-à-dire localhost: 8080 devrait me montrer la page d'accueil de Tomcat, n'est-ce pas? Mais cela ne s'affiche pas non plus
zulkarnain shah
Merci pour l'indice. J'étais un utilisateur d'Eclipse et là, cette configuration n'était pas nécessaire, mais maintenant j'utilise IntelliJ et c'était très encourageant.
Armer B.
@zulkarnainshah La page d'accueil habituelle de tomcat est générée par un WAR qui n'est pas inclus ici.
Thorbjørn Ravn Andersen
61

Lorsque nous créons une application Spring Boot, nous l'annotons avec une @SpringBootApplicationannotation. Cette annotation «termine» de nombreuses autres annotations nécessaires au fonctionnement de l'application. L'une de ces annotations est l' @ComponentScanannotation. Cette annotation indique à Spring de rechercher les composants Spring et de configurer l'application pour qu'elle s'exécute.

Votre classe d'application doit être au sommet de votre hiérarchie de packages, afin que Spring puisse analyser les sous-packages et découvrir les autres composants requis.

package com.test.spring.boot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

L'extrait de code ci-dessous fonctionne car le package du contrôleur est sous com.test.spring.bootpackage

package com.test.spring.boot.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HomeController {

    @RequestMapping("/")
    public String home(){
        return "Hello World!";
    }
}

L'extrait de code ci-dessous ne fonctionne PAS car le package du contrôleur n'est PAS sous com.test.spring.bootpackage

package com.test.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HomeController {

     @RequestMapping("/")
     public String home(){
         return "Hello World!";
     }
 }

À partir de la documentation de Spring Boot:

De nombreux développeurs Spring Boot ont toujours leur classe principale annotée avec @Configuration , @EnableAutoConfigurationet @ComponentScan. Étant donné que ces annotations sont si fréquemment utilisées ensemble (surtout si vous suivez les meilleures pratiques ci-dessus), Spring Boot offre une @SpringBootApplicationalternative pratique .

L' @SpringBootApplicationannotation équivaut à utiliser @Configuration, @EnableAutoConfigurationet @ComponentScanavec leurs attributs par défaut

musibs
la source
3
Très belle explication. Merci
Lova Chittumuri
39

Vous pouvez résoudre ce problème en ajoutant un ErrorControllerdans votre application. Vous pouvez demander au contrôleur d'erreur de renvoyer une vue dont vous avez besoin.

Le contrôleur d'erreur dans mon application ressemble à ci-dessous:

import org.springframework.boot.autoconfigure.web.ErrorAttributes;
import org.springframework.boot.autoconfigure.web.ErrorController;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

/**
 * Basic Controller which is called for unhandled errors
 */
@Controller
public class AppErrorController implements ErrorController{

    /**
     * Error Attributes in the Application
     */
    private ErrorAttributes errorAttributes;

    private final static String ERROR_PATH = "/error";

    /**
     * Controller for the Error Controller
     * @param errorAttributes
     */
    public AppErrorController(ErrorAttributes errorAttributes) {
        this.errorAttributes = errorAttributes;
    }

    /**
     * Supports the HTML Error View
     * @param request
     * @return
     */
    @RequestMapping(value = ERROR_PATH, produces = "text/html")
    public ModelAndView errorHtml(HttpServletRequest request) {
        return new ModelAndView("/errors/error", getErrorAttributes(request, false));
    }

    /**
     * Supports other formats like JSON, XML
     * @param request
     * @return
     */
    @RequestMapping(value = ERROR_PATH)
    @ResponseBody
    public ResponseEntity<Map<String, Object>> error(HttpServletRequest request) {
        Map<String, Object> body = getErrorAttributes(request, getTraceParameter(request));
        HttpStatus status = getStatus(request);
        return new ResponseEntity<Map<String, Object>>(body, status);
    }

    /**
     * Returns the path of the error page.
     *
     * @return the error path
     */
    @Override
    public String getErrorPath() {
        return ERROR_PATH;
    }


    private boolean getTraceParameter(HttpServletRequest request) {
        String parameter = request.getParameter("trace");
        if (parameter == null) {
            return false;
        }
        return !"false".equals(parameter.toLowerCase());
    }

    private Map<String, Object> getErrorAttributes(HttpServletRequest request,
                                                   boolean includeStackTrace) {
        RequestAttributes requestAttributes = new ServletRequestAttributes(request);
        return this.errorAttributes.getErrorAttributes(requestAttributes,
                includeStackTrace);
    }

    private HttpStatus getStatus(HttpServletRequest request) {
        Integer statusCode = (Integer) request
                .getAttribute("javax.servlet.error.status_code");
        if (statusCode != null) {
            try {
                return HttpStatus.valueOf(statusCode);
            }
            catch (Exception ex) {
            }
        }
        return HttpStatus.INTERNAL_SERVER_ERROR;
    }
}

La classe ci-dessus est basée sur la classe Springs BasicErrorController .

Vous pouvez instancier ce qui précède ErrorControllercomme ceci dans un @Configurationfichier:

 @Autowired
 private ErrorAttributes errorAttributes;

 @Bean
 public AppErrorController appErrorController(){return new AppErrorController(errorAttributes);}

Vous pouvez choisir de remplacer la valeur ErrorAttributespar défaut en implémentant ErrorAttributes . Mais dans la plupart des cas, DefaultErrorAttributes devrait suffire.

owaïsme
la source
1
Votre lien vers la BasicErrorControllerclasse 404.
Stephane
@owaism: Le lien pour BasicErrorControllern'est plus bon, pouvez-vous mettre à jour?
HDJEMAI
1
Le lien vers BasicErrorControllerest maintenant corrigé.
axiopisty
15

Dans mon cas, la classe de contrôleur était annotée avec @Controller. Changer cela pour @RestControllerrésoudre le problème. Fondamentalement, @RestControllerc'est @Controller + @ResponseBody donc soit utiliser @RestController, soit @Controlleravec une @ResponseBodyannotation avec chaque méthode.

Quelques notes utiles ici: https://www.genuitec.com/spring-frameworkrestcontroller-vs-controller/

ma clé
la source
Cela fonctionne, mais selon les exemples partout sur Internet, la configuration de base devrait fonctionner avec @Controller. Un organisme conscient de cette raison pour laquelle seul RestController fonctionne?
supernova
Lorsque vous annotez votre classe avec @RestControllerelle , vous ajoutez implicitement l' @ResponseBodyannotation, mais si vous utilisez l' @Controllerannotation, vous devez ajouter explicitement cette annotation vous-même.
Robin Keskisarkka
10

dans mon cas, c'est à cause de la position du package, ce qui signifie que le package du contrôleur doit être au-dessus du package de classe principale

si mon package de classe principale est package co.companyname.spring.tutorial;un package de contrôleur devraitpackage co.companyname.spring.tutorial.WHAT_EVER_HERE;

package co.companyname.spring.tutorial; // package for main class
@SpringBootApplication
public class FirstProjectApplication {

    public static void main(String[] args) {
        SpringApplication.run(FirstProjectApplication.class, args);
    }
}


package co.companyname.spring.tutorial.controllers; // package for controllers 

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController 
public class HelloController { 

@RequestMapping("/hello")  
public String hello() {   
 return "Hello, world"; 
 }}

après avoir terminé le codage, appuyez sur le tableau de bord de démarrage

entrez la description de l'image ici

une dernière chose pour vous assurer que votre contrôleur est mappé ou pas seulement la console, vous devriez voir quelque chose de smilliar

Mapped "{[/hello]}" onto public java.lang.String co.companyname.spring.tutorial.controllers.HelloController.hello()

bon codage

Mina Fawzy
la source
9

Essayez d'ajouter la dépendance.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
Sree
la source
2
mais qu'est-ce que cela fait réellement?
Stealth Rabbi
J'ai ajouté cette dépendance, et cela a fonctionné. Tout comme @StealthRabbi ... Je me demande aussi ce que cela fait réellement.
twindham
@StealthRabbi Cela ajoute une dépendance à un cadre de création de modèles appelé Thymeleaf, qui est une alternative et l'approche préférée de JSP. Cette réponse n'est pas une vraie réponse imo, jeter autour des dépendances n'aide personne qui est vraiment intéressé par le problème central
Christian
9

Cela se produit lorsqu'une page d'erreur explicite n'est pas définie. Pour définir une page d'erreur, créez un mappage de / error avec une vue. Par exemple, le code ci-dessous correspond à une valeur de chaîne renvoyée en cas d'erreur.

package com.rumango.controller;

import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class IndexController implements ErrorController{
    private final static String PATH = "/error";
    @Override
    @RequestMapping(PATH)
    @ResponseBody
    public String getErrorPath() {
        // TODO Auto-generated method stub
        return "No Mapping Found";
    }

}
prabhat kumar
la source
Pouvez-vous ajouter quelques explications à votre code? Pourquoi résout-il la question, quelles sont les parties cruciales?
Nico Haase
Il y a une chose spécifique à noter dans cette réponse relative à Spring Boot qui m'a causé un peu de mal de tête au début. Il est important d'implémenter l'interface ErrorController de springframework. Si vous créez un point de terminaison de contrôleur mappé à "/ error" sans faire cela, vous obtiendrez une erreur vous indiquant que la méthode est déjà mappée.
mmaynar1
5

J'ai ajouté cette dépendance et cela a résolu mon problème.

<dependency>
    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
Ekene Oguikpu
la source
Voici ma théorie: si nous utilisons "@Controller", Spring nous obligerait à avoir un certain moteur de template. Et dans ce cas, Thymeleaf. Par conséquent, spring-boot-starter-thymeleaf est nécessaire. Alors que si nous utilisons "@RestController", Spring Boot n'aurait pas besoin d'un moteur de modèle. Et par conséquent, cela fonctionne sans Thymeleaf.
Yosi Pramajaya
4

Je développe l'application Spring Boot depuis quelques semaines .. Et j'ai eu la même erreur que ci-dessous;

Page d'erreur Whitelabel Cette application n'a pas de mappage explicite pour / error, vous voyez donc cela comme une solution de secours. Thu Jan 18 14:12:11 AST 2018 Une erreur inattendue s'est produite (type = Not Found, status = 404). Aucun message disponible

Lorsque j'obtiens ce massage d'erreur, j'ai réalisé que ma classe de contrôleur ou de contrôleur de repos était définie dans mon projet. Je veux dire que tous nos packages de contrôleur ne sont pas le même package avec la classe principale qui inclut l'annotation @SpringBootApplication .. Je veux dire que vous devez ajouter le nom de votre package de contrôleur à l'annotation @ComponentScan à votre classe principale qui comprend l'annotation @SpringBootApplication. ci-dessous, votre problème sera résolu ... La chose la plus importante est que vous devez ajouter le package de votre contrôleur à l'annotation @ComponentScan comme je l'ai fait ci-dessous

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@ComponentScan({ "com.controller.package1, com.controller.package2, com.controller.package3, com.controller.packageN", "controller", "service" } // If our Controller class or Service class is not in the same packages we have //to add packages's name like this...directory(package) with main class
public class MainApp {
    public static void main(String[] args) {
        SpringApplication.run(MainApp.class, args);
    }
}

J'espère que ces codes vont aider quelqu'un ...

Si vous trouvez un autre moyen de résoudre cette erreur ou si vous avez des suggestions à me faire, veuillez écrire aux commentaires ... merci ...

Semih Erkaraca
la source
4

Dans la classe principale, après la configuration "@SpringBootApplication", ajouter "@ComponentScan" sans avoir d'arguments, a fonctionné pour moi !!!

Classe principale:

@SpringBootApplication
@ComponentScan
public class CommentStoreApplication {

    public static void main(String[] args) {
        SpringApplication.run(CommentStoreApplication.class, args);

    }
}

Classe RestController:

@RestController
public class CommentStoreApp {

    @RequestMapping("/") 
    public String hello() {
        return "Hello World!";
    }
}

PS: Ne manquez pas d'exécuter les commandes mvn clean et mvn install, avant de lancer l'application

Harika
la source
4

Assez tard à la fête. Selon la documentation officielle du printemps, "Spring Boot installe une page d'erreur de marque blanche que vous voyez dans un navigateur client si vous rencontrez une erreur de serveur." https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-customize-the-whitelabel-error-page

  1. Vous pouvez désactiver la fonctionnalité en définissant server.error.whitelabel.enabled=falsedans le fichier application.yml ou application.properties .

2. La méthode recommandée est de définir votre page d'erreur afin que l'utilisateur final puisse comprendre. Sous le dossier resources / templates , créez un fichier error.html et ajoutez une dépendance dans le fichier pom.xml

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

Spring choisira automatiquement la page error.html comme modèle d'erreur par défaut. Remarque: - N'oubliez pas de mettre à jour le projet maven après avoir ajouté une dépendance.

Joginder Malik
la source
3

Vous obtenez peut-être l'erreur ie

"Cette application n'a pas de mappage explicite pour / error, vous voyez donc cela comme une solution de secours."

C'est parce qu'il n'analyse pas vos classes Controller & Service que vous devez spécifier dans votre classe main () comme ceci,

package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableAutoConfiguration
**@ComponentScan({"com.example.demo", "controller", "service"})**
public class SpringBootMvcExample1Application {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootMvcExample1Application.class, args);
    }
}

Remarque: Ici, j'ai spécifié diverses classes comme la démo, le contrôleur et le service à analyser, alors seulement cela fonctionnera correctement.

Rupesh Bharuka
la source
3

Vous devez organiser les packages de sorte que le package contenant public static main (ou où vous avez écrit @SpringBootApplication), soit le père de tous vos autres packages.

Sakgeek
la source
- com.mypackage + nameApplication.java - com.mypachage.model - com.mypachage.controller - com.mypachage.dao
sakgeek
3

Par défaut, Spring Boot analysera le package actuel pour la définition du bean. Donc, si votre package actuel dans lequel la classe principale est définie et le package de contrôleur n'est pas le même ou que le package de contrôleur n'est pas le package enfant de votre package d'application principal, il n'analysera pas le contrôleur. Pour résoudre ce problème, vous pouvez inclure la liste des packages pour la définition du bean dans le package principal

@SpringBootApplication(scanBasePackages = {"com.module.restapi1.controller"})

ou créer une hiérarchie de package où le package enfant est dérivé du package principal

package com.module.restapi;
package com.module.restapi.controller
anand shukla
la source
2

Le problème est que vous naviguez vers localhost: 8080 / au lieu de localhost: 8080 / upload comme prescrit dans le guide. Spring Boot a une page d'erreur par défaut utilisée lorsque vous naviguez vers un itinéraire non défini pour éviter de divulguer des détails spécifiques au serveur (qui peuvent être considérés comme un risque de sécurité).

Vous avez le choix entre: visiter la bonne page, ajouter votre propre page de destination ou remplacer la page d'erreur blanche .

Pour simplifier cette situation particulière, j'ai mis à jour le guide afin qu'il utilise / au lieu de / upload.

Gregturn
la source
2

Je sais que ce n'est pas exactement la réponse à la question, mais cette question est la première qui apparaît sur Google :)

Le problème ("Cette application n'a pas de mappage explicite pour / erreur") apparaît lors de la tentative d'accès à l'interface utilisateur Swagger.

Dans mon cas, les problèmes ont été causés par @RestController ("/ endpoint"), qui n'est pas géré correctement par swagger.

Donc, cela a entraîné des erreurs:

@RestController("/endpoint")
public class EndpointController {

Et c'était bien

@RestController
@RequestMapping("/endpoint")
public class EndpointController {
Elas
la source
2

cela peut arriver si vous oubliez l'annotation @RestController en haut de votre classe de contrôleur import import org.springframework.web.bind.annotation.RestController;

et ajoutez l'annotation comme ci-dessous

reportez-vous à l'exemple simple ci-dessous

import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;


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

}
Sithija Piyuman Thewa Hettige
la source
1

Changez @Controller en @RestController dans votre classe de contrôleur et tout devrait se dérouler sans problème.

supernova
la source
1

J'ai moi aussi eu la même erreur et j'ai pu résoudre l'erreur en ajoutant la dépendance ci-dessous à mon pom.xml.

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>

La raison en est que nous utilisons JSP comme vue. Le conteneur de servlet intégré par défaut pour Spring Boot Starter Web est tomcat. Pour activer la prise en charge des JSP, nous aurions besoin d'ajouter une dépendance sur tomcat-embed-jasper.

Dans mon cas, je retournais un JSP comme vue du contrôleur. J'espère que cette réponse aidera quelqu'un qui est aux prises avec le même problème.

Sujana
la source
1

J'étais confronté au même problème, en utilisant gradle et il a été résolu en ajoutant les dépendances suivantes -

compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
compile('org.apache.tomcat.embed:tomcat-embed-jasper')

plus tôt, je manquais le dernier causant la même erreur.

siddhartha attri
la source
J'ai eu le même problème, et il me manquait le plugin tomcat-embed-jasper dans pom.xml. Et tomcat-embed-jasper est important pour le rendu de jsp.
rinilnath
boraji.com/... , cette piste pour trouver que tomcat-embed-jasper était manquant
rinilnath
1

J'étais confronté à ce problème, puis j'ai réalisé plus tard qu'il me manquait l' @Configurationannotation dans la MvcConfigclasse qui fait essentiellement le mappage pour ViewControllersetsetViewNames .

Voici le contenu du fichier:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
**@Configuration**
public class MvcConfig implements WebMvcConfigurer{
   public void addViewControllers(ViewControllerRegistry registry)
   {
      registry.addViewController("/").setViewName("login");
      registry.addViewController("/login").setViewName("login");
      registry.addViewController("/dashboard").setViewName("dashboard");
   }
}

J'espère que cela aide quelqu'un !!

Arupesh RoyChowdhury
la source
Cela l'a fait pour moi.
Anthony Okoth
1

Assurez-vous que vous avez jasper et jstl dans la liste des dépendances:

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>

Voici un projet de démarrage de travail - https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-web-jsp

Auteur: Biju Kunjummen

Yersin
la source
1

Je dois mentionner cette façon et donner la référence aux paquets et cela a fonctionné. Vous pouvez exclure @EnableAutoConfigurationcette annotation, mais je suis obligé de contourner toutes les dépendances liées à la base de données.

@SpringBootApplication
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
@ComponentScan(basePackages = {"your package 1", "your package2"})

public class CommentStoreApplication {

    public static void main(String[] args) {
        SpringApplication.run(CommentStoreApplication.class, args);

    }
}
homme
la source
1

La classe principale doit être en dehors de l'arborescence de vos packages d'application. Par exemple: exemple

Paulo Berezini
la source
0

Tout ce que j'ai fait pour résoudre ce genre de problème est de mentionner une @Configuration dans MVCConfig Class.

Comme celui-ci :

package com.example;

/**
 * Created by sartika.s.hasibuan on 1/10/2017.
 */
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@EnableAutoConfiguration
@Configuration
@ComponentScan
public class MvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/home").setViewName("home");
        registry.addViewController("/").setViewName("home");
        registry.addViewController("/hello").setViewName("hello");
        registry.addViewController("/login").setViewName("login");
    }

}
Sartika Hasibuan
la source
0

J'ai eu une erreur similaire, j'utilise le spring boot et la vitesse, ma solution est de vérifier le fichier application.properties, spring.velocity.toolbox-config-location trouvé que cette propriété est fausse

叶 为 正
la source
0

Dans mon cas, ce problème se produit lors de l'exécution de SpringApplication à partir d'IntelliJ après l'avoir d'abord exécuté avec maven.

Pour résoudre le problème, je cours en premier mvn clean. Ensuite, j'exécute SpringApplication à partir d'IntelliJ.

Mert Nuhoglu
la source
0

Assurez-vous que votre fichier Main. la classe doit être au-dessus de vos contrôleurs. Dans le cas de l'exemple suivant:

Main.class contenant:

@SpringBootApplication
public class Main {
    public static void main(String[] args) {
        SpringApplication.run(Main.class, args);
    }
}

EmployeeController. classe contenant:

@RestController
public class EmployeeController {
    @InitBinder
    public void setAllowedFields(WebDataBinder dataBinder) {
        dataBinder.setDisallowedFields("id");
    }

    @RequestMapping(value = "/employee/save", method = RequestMethod.GET)
    public String save(){
        Employee newEmp = new Employee();
        newEmp.setAge(25);
        newEmp.setFirstName("Pikachu");
        newEmp.setId(100);
        return "Name: " + newEmp.getFirstName() + ", Age: " + newEmp.getAge() + ", Id = " + newEmp.getId();
    }
}

Si votre classe principale est dans le dossier racine, tout comme ce chemin: {projectname} / src / main / java / main alors assurez-vous que vos contrôleurs sont en dessous de votre classe Main. Par exemple {projectname} / src / main / java / main / controllers .

Abed G.
la source
0

Dans votre fichier java (par exemple: Viper.java) ayant la classe principale, ajoutez: "@RestController" et @RequestMapping ("/")

@SpringBootApplication
@RestController
public class Viper {

  @RequestMapping("/")

   public String home(){
          return "This is what i was looking for";                      
     }

public static void main( String[] args){

   SpringApplication.run(Viper.class , args);
}

}
Mayur Chavan
la source
0

Vérifiez si vous avez marqué la classe de contrôleur avec l' annotation @RestController .

Karthik Kamath
la source