Erreur lors de la création de haricots avec le nom " org.springframework.web.servlet.mvc.la méthode.annotation.RequestMappingHandlerMapping'
Utiliser le jdk de 1,8
- Spring mvc-4.3.3
- SpringCore-4.3.3
- javax.servlet-api-3.0.1
- spring-data-jpa:1.10.4
- hibernate-entitymanager:4.2.5.Final
- hibernate-core:4.2.5.Final
- Journalisation Simple Façade pour Java:1.6.1
J'ai rencontré avec de telles erreurs
org.springframework.les haricots.usine.BeanCreationException: Erreur
la création de haricot avec nom
'org.springframework.web.servlet.mvc.la méthode.annotation.RequestMappingHandlerMapping':
L'Invocation de la méthode d'initialisation a échoué; nested exception est
java.lang.NoSuchMethodError:
org.springframework.de base.annotation.AnnotatedElementUtils.hasAnnotation
Ma question:
Pourquoi erreur encoured et comment résoudre ce problème?
web.xml
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>product</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>product</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
product-servlet.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
<context:component-scan base-package="com.kopylov.spring.controller" />
<mvc:annotation-driven/>
Contrôleur
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class ProductController {
@RequestMapping
public String showHome(){
return "home";
}
}
AppInitializer
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class AppInitializer s'étend AbstractAnnotationConfigDispatcherservletinitializer {
@Override
protected Class<?>[] getRootConfigClasses(){
return new Class<?>[]{
DataConfig.class
};
}
@Override
protected Class<?>[] getServletConfigClasses(){
return new Class<?>[0];
}
@Override
protected String[] getServletMappings(){
return new String[0];
}
}
DataConfig
@Configuration
@EnableTransactionManagement
@ComponentScan("com.kopylov.spring")
@PropertySource("classpath:/com/kopylov/spring/resources/app.properties")
@EnableJpaRepositories("com.kopylov.spring.repository")
public class DataConfig {
private static final String PROP_DATABASE_DRIVER = "db.driver";
private static final String PROP_DATABASE_PASSWORD = "db.password";
private static final String PROP_DATABASE_URL = "db.url";
private static final String PROP_DATABASE_USERNAME = "db.username";
private static final String PROP_HIBERNATE_DIALECT = "db.hibernate.dialect";
private static final String PROP_HIBERNATE_SHOW_SQL = "db.hibernate.dialect";
private static final String PROP_ENTITYMANAGER_PACKAGES_TO_SCAN = "db.entitymanager.packages.to.scan";
private static final String PROP_HIBERNATE_HBM2DDL_AUTO = "db.hibernate.hbm2ddl.auto";
@Resource
private Environment env;
@Bean
public DataSource dataSource(){
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(env.getRequiredProperty(PROP_DATABASE_DRIVER));
dataSource.setUrl(env.getRequiredProperty(PROP_DATABASE_URL));
dataSource.setUsername(env.getRequiredProperty(PROP_DATABASE_USERNAME));
dataSource.setPassword(env.getRequiredProperty(PROP_DATABASE_PASSWORD));
return dataSource;
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory(){
LocalContainerEntityManagerFactoryBean emfb = new LocalContainerEntityManagerFactoryBean();
emfb.setDataSource(dataSource());
emfb.setPersistenceProviderClass(HibernatePersistence.class);
emfb.setPackagesToScan(env.getRequiredProperty(PROP_ENTITYMANAGER_PACKAGES_TO_SCAN));
emfb.setJpaProperties(getHibernateProperties());
return emfb;
}
@Bean
public JpaTransactionManager transactionManager(){
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(entityManagerFactory().getObject());
return transactionManager;
}
private Properties getHibernateProperties(){
Properties properties = new Properties();
properties.put(PROP_HIBERNATE_DIALECT, env.getRequiredProperty(PROP_HIBERNATE_DIALECT));
properties.put(PROP_HIBERNATE_SHOW_SQL, env.getRequiredProperty(PROP_HIBERNATE_SHOW_SQL));
properties.put(PROP_HIBERNATE_HBM2DDL_AUTO, env.getRequiredProperty(PROP_HIBERNATE_HBM2DDL_AUTO));
return properties;
}
OriginalL'auteur kopylov | 2016-11-02
Vous devez vous connecter pour publier un commentaire.
Vous avez probablement oublié d'importer votre produit-serlet à la configuration de la classe
vous pouvez déplacer votre product-servlet.xml de "ressources" de sorte qu'il est disponible dans le classpath
de sorte que votre servlet cartographie ressemble à ceci
dans votre config
BTW, mieux vaut ne pas mélanger match xml et java de configuration. Comme java config est devenu la norme, vous pouvez l'utiliser WebMvcConfigurerAdapter
http://www.mkyong.com/spring-mvc/gradle-spring-4-mvc-hello-world-example-annotation/
OriginalL'auteur kuhajeyan
Je pense que vous avez manqué certains dépôts en pom.xml ou plusieurs pots de différentes versions de votre pom.xml. Parfois, votre printemps pots de ne pas correspondre mutuellement les uns avec les autres.
Ajouter ceci:
Supprimer 4.3.3.La LIBÉRATION de toutes les dépendances spring.
Consulter: http://docs.spring.io/spring/docs/current/spring-framework-reference/html/overview.html (Lire: Maven "Bill Of Materials" De La Dépendance)
OriginalL'auteur Chandana Kumara
Je ne pense pas que votre répartiteur est correctement configuré dans votre web.xml. Vous n'avez pas tout
<init-param>
balises. Voir les docshttp://docs.spring.io/spring-flex/docs/1.0.x/reference/html/ch02s02.html
Essayer d'édition:
<servlet>
<servlet-name>product</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/product-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
MODIFIER pour plus d'info
Aussi, je crois que vous devrez ajouter un peu de la cartographie de votre @RequestMapping annotation, voir le lien:
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-ann-requestmapping
OriginalL'auteur FanOfSkynyrd
D'abord vérifier si tous le chemin de génération, les erreurs sont résolues ou non.
Dans la plupart de ce genre de cas, le printemps de l'initialiseur génère cette erreur si le chemin de génération d'erreurs ne sont pas résolus.
OriginalL'auteur kupendra pola