WebMvcConfigurerAdapter ne fonctionne pas
C'est WebConfig de code, je suis en train de travailler sur:
package hello.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/greeting").setViewName("greeting");
}
}
Et c'est mon Application.class
package hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
@SpringBootApplication
public class Application extends SpringBootServletInitializer{
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
}
Il semble être un spring-boot que ces méthodes de la classe n'est pas appelée dans certains systèmes. Le problème est signalé à:
https://github.com/spring-projects/spring-boot/issues/2870
Ma question est, peut-on la carte des ressources mappé dans cette classe, à l'extérieur de cette classe comme une solution de contournement temporaire?
Si oui, comment pouvons-nous faire cela?
Mise à jour: Suivantes Andy Wilkinson suggestion, je l'ai enlevé @EnableWebMvc
et la demo app commencé à travailler. Puis j'ai essayé de décapage projet les fichiers un par un pour voir à quel point l'erreur disparaît. J'ai trouvé que j'avais deux classes dans le projet, un projet, étendu de WebMvcConfigurationSupport
et la seconde, à partir de WebMvcConfigurerAdapter
. dépose de l'ancienne classe à partir du projet de correction de l'erreur.
Ce que je veux savoir, c'est, pourquoi est-ce arrivé? Deuxièmement, pourquoi ne pas cette erreur apparaît sur tous les systèmes?
@EnableWebMvc
comme cela est déjà fait automatiquement par le Printemps de Démarrage. Est le haricot construit? Est-il pris en charge par votre component-scan?Oui, la fève est se construit. J'ai oublié de mentionner une chose. Quand je renomme WebConfig de MvcConfig, tout commence à travailler. Mais cela semble être spécifique du système de solution... Il ne fonctionne pas pour tous les systèmes.
S'il vous plaît ajouter votre classe d'application. Et avez-vous essayé avec la suppression de la
@EnableWebMvc
que ce n'est pas nécessaire, au Printemps de Démarrage de l'application.Ok.. je vais ajouter la classe d'application. Oui j'ai essayé de supprimer "@EnableWebMvc'...N'a pas encore de travail
Dans ce cas il n'est pas de travail? Une chose qui est mauvais, c'est le fait que vous utilisez
SpringApplication
comme source, alors qu'elle devrait être Application
.OriginalL'auteur ask5332 | 2015-06-18
Vous devez vous connecter pour publier un commentaire.
Le problème est que
WebConfig
est dans leconfig
paquet etApplication
est dans lehello
paquet.@SpringBootApplication
surApplication
permet composante de la numérisation pour l'emballage dans lequel elle est déclarée et celle de l'ensemble de sous-paquets. Dans ce cas, cela signifie quehello
est le package de base de la composante de la numérisation et, par conséquent,WebConfig
dans leconfig
paquet n'est jamais trouvé.Pour résoudre le problème je devais déménager
WebConfig
dans lehello
paquet ou un sous-ensemble, par exemplehello.config
.Votre dernière mise à jour sur GitHub changé
WebConfig
de l'extension deWebMvcConfigurerAdapter
de l'extension deWebMvcConfigurationSupport
.WebMvcConfigurationSupport
est la classe qui est importé par@EnableWebMvc
donc annoter votre classe avec@EnableWebMvc
et l'extension deWebMvcConfigurationSupport
sera la configuration des choses deux fois. Vous devriez retourner à l'extension deWebMvcConfigurerAdapter
que vous étiez avant.Vous devriez vraiment mettre à jour le code en question, sinon cela va devenir très déroutant.
merci pour cette remarque, j'ai senti que la réponse ne correspond pas à la question. Je peux vous recommandons de vérifier la question de version de l'histoire si quelqu'un d'autre tombe sur ce, à voir ce que le code regardé comme à l'origine.
OriginalL'auteur Andy Wilkinson