在本文中,我们将给您介绍关于创建名称为'requestMappingHandlerAdapter'的bean时出错的详细内容,并且为您解答创建名称为shopingmall的django项目,使用的命令
在本文中,我们将给您介绍关于创建名称为'requestMappingHandlerAdapter'的bean时出错的详细内容,并且为您解答创建名称为shopingmall的django项目,使用的命令是的相关问题,此外,我们还将为您提供关于idea 报错 Error creating bean with name ''requestMappingHandlerMapping'' defined in class path...、java – RequestMappingHandlerMapping.getHandlerInternal:230 – 没有找到处理程序方法、java – 创建名为defaultServletHandlerMapping的bean时出错、org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter的实例源码的知识。
本文目录一览:- 创建名称为'requestMappingHandlerAdapter'的bean时出错(创建名称为shopingmall的django项目,使用的命令是)
- idea 报错 Error creating bean with name ''requestMappingHandlerMapping'' defined in class path...
- java – RequestMappingHandlerMapping.getHandlerInternal:230 – 没有找到处理程序方法
- java – 创建名为defaultServletHandlerMapping的bean时出错
- org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter的实例源码
创建名称为'requestMappingHandlerAdapter'的bean时出错(创建名称为shopingmall的django项目,使用的命令是)
我正在使用Springframework和Tomcat创建一个简单的REST服务。响应应该像{“ id”:“ 101”,“ name”:“
Ram”}之类的json中。每次运行时,出现以下错误
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ''requestMappingHandlerAdapter'' defined in class org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.requestMappingHandlerAdapter()] threw exception; nested exception is java.lang.ClassCastException: org.springframework.web.accept.ContentNegotiationManagerFactoryBean$$EnhancerByCGLIB$$88a811cb cannot be cast to org.springframework.web.accept.ContentNegotiationManagerorg.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:603)org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1057)org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:953)org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:487)org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:191)org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:636)org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:934)org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:651)org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:602)org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:665)org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:521)org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:462)org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)javax.servlet.GenericServlet.init(GenericServlet.java:158)org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670)org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2508)org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2497)java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)java.lang.Thread.run(Thread.java:745)root causeorg.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.requestMappingHandlerAdapter()] threw exception; nested exception is java.lang.ClassCastException: org.springframework.web.accept.ContentNegotiationManagerFactoryBean$$EnhancerByCGLIB$$88a811cb cannot be cast to org.springframework.web.accept.ContentNegotiationManager org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:181)org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:592)org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1057)org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:953)org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:487)org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:191)org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:636)org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:934)org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:651)org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:602)org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:665)org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:521)org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:462)org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)javax.servlet.GenericServlet.init(GenericServlet.java:158)org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670)org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2508)org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2497)java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)java.lang.Thread.run(Thread.java:745)root causejava.lang.ClassCastException: org.springframework.web.accept.ContentNegotiationManagerFactoryBean$$EnhancerByCGLIB$$88a811cb cannot be cast to org.springframework.web.accept.ContentNegotiationManagerorg.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration$$EnhancerBySpringCGLIB$$5d7f2b5e.mvcContentNegotiationManager(<generated>)org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.requestMappingHandlerAdapter(WebMvcConfigurationSupport.java:359)org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration$$EnhancerBySpringCGLIB$$5d7f2b5e.CGLIB$requestMappingHandlerAdapter$18(<generated>)org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration$$EnhancerBySpringCGLIB$$5d7f2b5e$$FastClassBySpringCGLIB$$3589a606.invoke(<generated>)org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:293)org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration$$EnhancerBySpringCGLIB$$5d7f2b5e.requestMappingHandlerAdapter(<generated>)sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)java.lang.reflect.Method.invoke(Method.java:497)org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:160)org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:592)org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1057)org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:953)org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:487)org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:191)org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:636)org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:934)org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:651)org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:602)org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:665)org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:521)org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:462)org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)javax.servlet.GenericServlet.init(GenericServlet.java:158)org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670)org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2508)org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2497)java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)java.lang.Thread.run(Thread.java:745)
从这里开始,以下是我的Java代码和xml文件。
POM.xml
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>json</groupId><artifactId>LimitlessREST</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><name>LimitlessREST</name><properties> <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies> <dependency> <groupId>javax</groupId> <artifactId>javaee-web-api</artifactId> <version>7.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>3.2.12.RELEASE</version> </dependency> <!-- Jackson JSON Mapper --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>3.2.12.RELEASE</version></dependency></dependencies><build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.7</source> <target>1.7</target> <compilerArguments> <endorseddirs>${endorsed.dir}</endorseddirs> </compilerArguments> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.3</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.6</version> <executions> <execution> <phase>validate</phase> <goals> <goal>copy</goal> </goals> <configuration> <outputDirectory>${endorsed.dir}</outputDirectory> <silent>true</silent> <artifactItems> <artifactItem> <groupId>javax</groupId> <artifactId>javaee-endorsed-api</artifactId> <version>7.0</version> <type>jar</type> </artifactItem> </artifactItems> </configuration> </execution> </executions> </plugin> </plugins></build></project>
web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app version="3.1" 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"> <display-name>LimitlessREST</display-name><servlet> <servlet-name>front-controller</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup></servlet> <servlet-mapping> <servlet-name>front-controller</servlet-name> <url-pattern>/rest/*</url-pattern></servlet-mapping><!-- max time of the session //--><session-config> <session-timeout> 30 </session-timeout></session-config><!-- default page //--><welcome-file-list> <welcome-file>index.html</welcome-file></welcome-file-list>
front-controller-servlet.xml
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"><context:component-scan base-package="json." /><mvc:annotation-driven />
json / User.java
package json;public class User {private int userID;private String userName;public User(){}public int getUserID() { return userID;}public void setUserID(int userID) { this.userID = userID;}public String getUserName() { return userName;}public void setUserName(String userName) { this.userName = userName;} }
json / UserService.java
package json;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.servlet.config.annotation.EnableWebMvc;@EnableWebMvc@Controllerpublic class UserService {@RequestMapping(value = "/user", method = RequestMethod.GET, produces = {"application/json"})public @ResponseBody User getUser(){ User us = new User(); us.setUserID(101); us.setUserName("Ram"); return us;}}
使用Netbeans作为IDE,Tomcat 8.0.34和Springframework 3.2.12.RELEASE。
答案1
小编典典你的原因是
嵌套异常为java.lang.ClassCastException:org.springframework.web.accept.ContentNegotiationManagerFactoryBean
$$ EnhancerByCGLIB $$
88a811cb无法转换为org.springframework.web.accept.ContentNegotiationManager
这可能是由于双方<mvc:annotation-driven/>
并@EnableWebMvc
一起使用。由于它们不是互补的,因此请@EnableWebMvc
与基于Java的配置或<mvc:annotation-driven />
xml一起使用。
idea 报错 Error creating bean with name ''requestMappingHandlerMapping'' defined in class path...
核对一下控制器是不是写了相同的路径。。。
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ''requestMappingHandlerMapping'' defined in class path resource [org/springframework/boot/autoconfigure/web/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: Ambiguous mapping. Cannot map ''deliveryWeb'' method
public java.lang.Object org.aodous.mall.toy.controller.DeliveryWeb.readyDelivery(org.aodous.mall.toy.pojo.DeliveryInfo)
to {[]}: There is already ''deliveryWeb'' bean method
public java.lang.Object org.aodous.mall.toy.controller.DeliveryWeb.cancelDelivery(org.aodous.mall.toy.pojo.CancelDeliveryInfo) mapped.
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867) ~[spring-context-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543) ~[spring-context-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693) [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360) [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118) [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107) [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
at org.aodous.mall.toy.ToyApplication.main(ToyApplication.java:12) [classes/:na]
Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map ''deliveryWeb'' method
public java.lang.Object org.aodous.mall.toy.controller.DeliveryWeb.readyDelivery(org.aodous.mall.toy.pojo.DeliveryInfo)
to {[]}: There is already ''deliveryWeb'' bean method
public java.lang.Object org.aodous.mall.toy.controller.DeliveryWeb.cancelDelivery(org.aodous.mall.toy.pojo.CancelDeliveryInfo) mapped.
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry.assertUniqueMethodMapping(AbstractHandlerMethodMapping.java:576) ~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry.register(AbstractHandlerMethodMapping.java:540) ~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.registerHandlerMethod(AbstractHandlerMethodMapping.java:264) ~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.detectHandlerMethods(AbstractHandlerMethodMapping.java:250) ~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.initHandlerMethods(AbstractHandlerMethodMapping.java:214) ~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.afterPropertiesSet(AbstractHandlerMethodMapping.java:184) ~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.afterPropertiesSet(RequestMappingHandlerMapping.java:127) ~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
... 16 common frames omitted
java – RequestMappingHandlerMapping.getHandlerInternal:230 – 没有找到处理程序方法
试图制作一些弹簧示例程序 – 不断得到错误 – 发生我的控制器无法处理/你好请求.这是来自log4j的调试信息.
13:50:58,502 {TRACE} dispatcherServlet.initContextHolders:1018 - Bound request context to thread: org.apache.catalina.connector.RequestFacade@636f2067
13:50:58,503 {DEBUG} dispatcherServlet.doService:823 - dispatcherServlet with name 'springtest' processing GET request for [/springtest_2/hello]
13:50:58,504 {TRACE} dispatcherServlet.getHandler:1088 - Testing handler map
[org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping@7bab2c3] in dispatcherServlet with name 'springtest'
13:50:58,504 {DEBUG} RequestMappingHandlerMapping.getHandlerInternal:220 - Looking
up handler method for path /hello
13:50:58,504 {DEBUG} RequestMappingHandlerMapping.getHandlerInternal:230 - Did not find handler method for [/hello]
13:50:58,504 {TRACE} dispatcherServlet.getHandler:1088 - Testing handler map [org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping@722e242b] in dispatcherServlet with name 'springtest'
13:50:58,505 {TRACE} BeanNameUrlHandlerMapping.getHandlerInternal:127 - No handler mapping found for [/hello]
13:50:58,505 {WARN} PageNotFound.noHandlerFound:1108 - No mapping found for HTTP request with URI [/springtest_2/hello] in dispatcherServlet with name 'springtest'
13:50:58,505 {TRACE} dispatcherServlet.resetContextHolders:1028 - Cleared thread-bound request context: org.apache.catalina.connector.RequestFacade@636f2067
13:50:58,505 {DEBUG} dispatcherServlet.processRequest:966 - Successfully completed request
13:50:58,506 {TRACE} XmlWebApplicationContext.publishEvent:332 - Publishing event in WebApplicationContext for namespace 'springtest-servlet': ServletRequestHandledEvent: url=[/springtest_2/hello]; client=[0:0:0:0:0:0:0:1]; method=[GET]; servlet=[springtest]; session=[null]; user=[null]; time=[9ms]; status=[OK]
我项目中的web.xml.
display-name>Spring3-Hibernate DEMOdisplay-name>
figListeneraram>
figLocationaram-name>
aram-value>/WEB-INF/log4j.properties
aram-value>
aram>
总结
以上是小编为你收集整理的java – RequestMappingHandlerMapping.getHandlerInternal:230 – 没有找到处理程序方法全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
java – 创建名为defaultServletHandlerMapping的bean时出错
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'defaultServletHandlerMapping' defined in class path resource [org/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.class]: Bean instantiation via factory method Failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.servlet.HandlerMapping]: Factory method 'defaultServletHandlerMapping' threw exception; nested exception is java.lang.IllegalArgumentException: A ServletContext is required to configure default servlet handling at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:602) at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.instantiateUsingFactoryMethod(AbstractAutowireCapablebeanfactory.java:1113) at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.createBeanInstance(AbstractAutowireCapablebeanfactory.java:1008) at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.doCreateBean(AbstractAutowireCapablebeanfactory.java:505) at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.createBean(AbstractAutowireCapablebeanfactory.java:476) at org.springframework.beans.factory.support.Abstractbeanfactory$1.getobject(Abstractbeanfactory.java:302) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:229) at org.springframework.beans.factory.support.Abstractbeanfactory.doGetBean(Abstractbeanfactory.java:298) at org.springframework.beans.factory.support.Abstractbeanfactory.getBean(Abstractbeanfactory.java:193) at org.springframework.beans.factory.support.DefaultListablebeanfactory.preInstantiateSingletons(DefaultListablebeanfactory.java:762) at org.springframework.context.support.AbstractApplicationContext.finishbeanfactoryInitialization(AbstractApplicationContext.java:757) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:125) at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:60) at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.delegateLoading(AbstractDelegatingSmartContextLoader.java:109) at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:261) at org.springframework.test.context.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:68) at org.springframework.test.context.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:86) at org.springframework.test.context.DefaultTestContext.getApplicationContext(DefaultTestContext.java:72) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:117) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:212) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:200) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:252) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:254) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runchild(SpringJUnit4ClassRunner.java:217) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runchild(SpringJUnit4ClassRunner.java:83) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runchildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:68) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:163) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.servlet.HandlerMapping]: Factory method 'defaultServletHandlerMapping' threw exception; nested exception is java.lang.IllegalArgumentException: A ServletContext is required to configure default servlet handling at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189) at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:591) ... 42 more Caused by: java.lang.IllegalArgumentException: A ServletContext is required to configure default servlet handling at org.springframework.util.Assert.notNull(Assert.java:112) at org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer.<init>(DefaultServletHandlerConfigurer.java:53) at org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.defaultServletHandlerMapping(WebMvcConfigurationSupport.java:423) at org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration$$EnhancerBySpringcglib$$c5df7504.cglib$defaultServletHandlerMapping$21(<generated>) at org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration$$EnhancerBySpringcglib$$c5df7504$$FastClassBySpringcglib$$7686853e.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:312) at org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration$$EnhancerBySpringcglib$$c5df7504.defaultServletHandlerMapping(<generated>) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) ... 43 more 2015-03-02 23:04:13 ERROR TestContextManager:215 - Caught exception while allowing TestExecutionListener [org.springframework.test.context.support.DependencyInjectionTestExecutionListener@725f5] to prepare test instance [org.munaycoop.taskmanager.services.TaskServiceTest@822d9b] java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.context.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:94) at org.springframework.test.context.DefaultTestContext.getApplicationContext(DefaultTestContext.java:72) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:117) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:212) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:200) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:252) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:254) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runchild(SpringJUnit4ClassRunner.java:217) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runchild(SpringJUnit4ClassRunner.java:83) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runchildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:68) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:163) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'defaultServletHandlerMapping' defined in class path resource [org/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.class]: Bean instantiation via factory method Failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.servlet.HandlerMapping]: Factory method 'defaultServletHandlerMapping' threw exception; nested exception is java.lang.IllegalArgumentException: A ServletContext is required to configure default servlet handling at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:602) at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.instantiateUsingFactoryMethod(AbstractAutowireCapablebeanfactory.java:1113) at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.createBeanInstance(AbstractAutowireCapablebeanfactory.java:1008) at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.doCreateBean(AbstractAutowireCapablebeanfactory.java:505) at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.createBean(AbstractAutowireCapablebeanfactory.java:476) at org.springframework.beans.factory.support.Abstractbeanfactory$1.getobject(Abstractbeanfactory.java:302) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:229) at org.springframework.beans.factory.support.Abstractbeanfactory.doGetBean(Abstractbeanfactory.java:298) at org.springframework.beans.factory.support.Abstractbeanfactory.getBean(Abstractbeanfactory.java:193) at org.springframework.beans.factory.support.DefaultListablebeanfactory.preInstantiateSingletons(DefaultListablebeanfactory.java:762) at org.springframework.context.support.AbstractApplicationContext.finishbeanfactoryInitialization(AbstractApplicationContext.java:757) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:125) at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:60) at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.delegateLoading(AbstractDelegatingSmartContextLoader.java:109) at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:261) at org.springframework.test.context.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:68) at org.springframework.test.context.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:86) ... 25 more Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.servlet.HandlerMapping]: Factory method 'defaultServletHandlerMapping' threw exception; nested exception is java.lang.IllegalArgumentException: A ServletContext is required to configure default servlet handling at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189) at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:591) ... 42 more Caused by: java.lang.IllegalArgumentException: A ServletContext is required to configure default servlet handling at org.springframework.util.Assert.notNull(Assert.java:112) at org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer.<init>(DefaultServletHandlerConfigurer.java:53) at org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.defaultServletHandlerMapping(WebMvcConfigurationSupport.java:423) at org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration$$EnhancerBySpringcglib$$c5df7504.cglib$defaultServletHandlerMapping$21(<generated>) at org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration$$EnhancerBySpringcglib$$c5df7504$$FastClassBySpringcglib$$7686853e.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:312) at org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration$$EnhancerBySpringcglib$$c5df7504.defaultServletHandlerMapping(<generated>) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) ... 43 more
这是我的考试类:
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes=ApplicationContextTest.class) public class AccountServiceTest { .. }
和我的ApplicationContextTest:
@Configuration @EnableTransactionManagement @PropertySource({ "classpath:databaseTest.properties" }) @ComponentScan(basePackages = { "org.example.springproject" }) public class ApplicationContextTest { @Autowired private Environment env; @Bean(name = "dataSource") public DataSource dataSource() { return new EmbeddedDatabaseBuilder() .setType(EmbeddedDatabaseType.Hsql) .addScript("classpath:sql/schema.sql") .addScript("classpath:sql/test-data.sql") .build(); } @Bean(name = "sessionFactory") public LocalSessionfactorybean sessionFactory() { LocalSessionfactorybean sessionFactory = new LocalSessionfactorybean(); sessionFactory.setDataSource(dataSource()); sessionFactory.setPackagesToScan(new String[] { "org.example.springproject.domains" }); sessionFactory.setHibernateProperties(hibernateProperties()); return sessionFactory; } @Bean(name = "transactionManager") public HibernateTransactionManager transactionManager() { HibernateTransactionManager txManager = new HibernateTransactionManager(); txManager.setSessionFactory(sessionFactory().getobject()); return txManager; } @SuppressWarnings("serial") private Properties hibernateProperties() { return new Properties() { { setProperty("hibernate.cache.provider_class",env.getProperty("hibernate.provider_class")); setProperty("hibernate.show_sql",env.getProperty("hibernate.show_sql")); setProperty("hibernate.hbm2ddl.auto",env.getProperty("hibernate.hbm2ddl")); } }; } }
我尝试在我的测试类上放置@WebAppConfiguration,但这没有工作.
该项目是一个Spring MVC项目,但现在我正在测试服务层,那么为什么我需要把这个注释放在我的课上呢?
即使有这个注释,另一个错误即将到来.
那么这里有什么呢?
解决方法
@ComponentScan(basePackages = { “org.example.springproject” })
我会假设你的包中有其他@Configuration,这是由@ComponentScan(在您的异常中出现的DelegatingWebMvcConfiguration,最有可能由@EnableWebMvc在外部@Configuration中的某个地方导入)所选择的.
可能的解决方案是在组件扫描中使用过滤器.
@ComponentScan(basePackages = { “org.example.springproject” },excludeFilters = { @Filter(type = FilterType.ANNOTATION,value = Configuration.class) })
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter的实例源码
@Test(expected = TypeMismatchException.class) public void testCustomConversionService() throws Exception { loadBeanDeFinitions("mvc-config-custom-conversion-service.xml",14); RequestMappingHandlerMapping mapping = appContext.getBean(RequestMappingHandlerMapping.class); assertNotNull(mapping); mapping.setDefaultHandler(handlerMethod); // default web binding initializer behavior test MockHttpServletRequest request = new MockHttpServletRequest("GET","/"); request.setRequestURI("/accounts/12345"); request.addParameter("date","2009-10-31"); MockHttpServletResponse response = new MockHttpServletResponse(); HandlerExecutionChain chain = mapping.getHandler(request); assertEquals(1,chain.getInterceptors().length); assertTrue(chain.getInterceptors()[0] instanceof ConversionServiceExposingInterceptor); ConversionServiceExposingInterceptor interceptor = (ConversionServiceExposingInterceptor) chain.getInterceptors()[0]; interceptor.preHandle(request,response,handler); assertSame(appContext.getBean("conversionService"),request.getAttribute(ConversionService.class.getName())); RequestMappingHandlerAdapter adapter = appContext.getBean(RequestMappingHandlerAdapter.class); assertNotNull(adapter); adapter.handle(request,handlerMethod); }
@Override public void afterPropertiesSet() throws Exception { RequestMappingHandlerAdapter requestMappingHandlerAdapter = this.beanfactory.getBean(RequestMappingHandlerAdapter.class); List<HandlerMethodArgumentResolver> argumentResolvers = new ArrayList<>(); List<HandlerMethodReturnValueHandler> returnValueHandlers = new ArrayList<>(); if (beanfactory instanceof Configurablebeanfactory) { argumentResolvers.add(new WxArgumentResolver((Configurablebeanfactory) beanfactory)); } else { argumentResolvers.add(new WxArgumentResolver(beanfactory.getBean(WxUserManager.class),beanfactory.getBean(WxUserProvider.class))); } returnValueHandlers.add(beanfactory.getBean(WxAsyncmessageReturnValueHandler.class)); argumentResolvers.addAll(requestMappingHandlerAdapter.getArgumentResolvers()); returnValueHandlers.addAll(requestMappingHandlerAdapter.getReturnValueHandlers()); requestMappingHandlerAdapter.setArgumentResolvers(argumentResolvers); requestMappingHandlerAdapter.setReturnValueHandlers(returnValueHandlers); }
private void doTestCustomValidator(String xml) throws Exception { loadBeanDeFinitions(xml,14); RequestMappingHandlerMapping mapping = appContext.getBean(RequestMappingHandlerMapping.class); assertNotNull(mapping); assertFalse(mapping.getUrlPathHelper().shouldRemoveSemicolonContent()); RequestMappingHandlerAdapter adapter = appContext.getBean(RequestMappingHandlerAdapter.class); assertNotNull(adapter); assertEquals(true,new DirectFieldAccessor(adapter).getPropertyValue("ignoreDefaultModelOnRedirect")); // default web binding initializer behavior test MockHttpServletRequest request = new MockHttpServletRequest(); request.addParameter("date","2009-10-31"); MockHttpServletResponse response = new MockHttpServletResponse(); adapter.handle(request,handlerMethod); assertTrue(appContext.getBean(TestValidator.class).validatorInvoked); assertFalse(handler.recordedValidationError); }
@Test public void testAsyncSupportOptions() throws Exception { loadBeanDeFinitions("mvc-config-async-support.xml",15); RequestMappingHandlerAdapter adapter = appContext.getBean(RequestMappingHandlerAdapter.class); assertNotNull(adapter); DirectFieldAccessor fieldAccessor = new DirectFieldAccessor(adapter); assertEquals(ConcurrentTaskExecutor.class,fieldAccessor.getPropertyValue("taskExecutor").getClass()); assertEquals(2500L,fieldAccessor.getPropertyValue("asyncRequestTimeout")); CallableProcessingInterceptor[] callableInterceptors = (CallableProcessingInterceptor[]) fieldAccessor.getPropertyValue("callableInterceptors"); assertEquals(1,callableInterceptors.length); DeferredResultProcessingInterceptor[] deferredResultInterceptors = (DeferredResultProcessingInterceptor[]) fieldAccessor.getPropertyValue("deferredResultInterceptors"); assertEquals(1,deferredResultInterceptors.length); }
@Test public void requestMappingHandlerAdapter() throws Exception { delegatingConfig.setConfigurers(Arrays.asList(WebMvcConfigurer)); RequestMappingHandlerAdapter adapter = delegatingConfig.requestMappingHandlerAdapter(); ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer) adapter.getWebBindingInitializer(); ConversionService initializerConversionService = initializer.getConversionService(); assertTrue(initializer.getValidator() instanceof LocalValidatorfactorybean); verify(WebMvcConfigurer).configureMessageConverters(converters.capture()); verify(WebMvcConfigurer).configureContentNegotiation(contentNegotiationConfigurer.capture()); verify(WebMvcConfigurer).addFormatters(conversionService.capture()); verify(WebMvcConfigurer).addArgumentResolvers(resolvers.capture()); verify(WebMvcConfigurer).addReturnValueHandlers(handlers.capture()); verify(WebMvcConfigurer).configureAsyncSupport(asyncConfigurer.capture()); assertSame(conversionService.getValue(),initializerConversionService); assertEquals(0,resolvers.getValue().size()); assertEquals(0,handlers.getValue().size()); assertEquals(converters.getValue(),adapter.getMessageConverters()); assertNotNull(asyncConfigurer); }
@SuppressWarnings("unchecked") @Test public void testArgumentResolvers() { loadBeanDeFinitions("mvc-config-argument-resolvers.xml"); RequestMappingHandlerAdapter adapter = appContext.getBean(RequestMappingHandlerAdapter.class); assertNotNull(adapter); Object value = new DirectFieldAccessor(adapter).getPropertyValue("customArgumentResolvers"); assertNotNull(value); assertTrue(value instanceof List); List<HandlerMethodArgumentResolver> resolvers = (List<HandlerMethodArgumentResolver>) value; assertEquals(3,resolvers.size()); assertTrue(resolvers.get(0) instanceof ServletWebArgumentResolverAdapter); assertTrue(resolvers.get(1) instanceof TestHandlerMethodArgumentResolver); assertTrue(resolvers.get(2) instanceof TestHandlerMethodArgumentResolver); assertNotSame(resolvers.get(1),resolvers.get(2)); }
private void rebuildMessageConverter(RequestMappingHandlerAdapter adapter) { List<HttpMessageConverter<?>> messageConverters = adapter.getMessageConverters(); if (!CollectionUtils.isEmpty(messageConverters)) { for (HttpMessageConverter<?> messageConverter : messageConverters) { if (messageConverter instanceof MappingJackson2HttpMessageConverter) { rebuildJacksonV2((MappingJackson2HttpMessageConverter) messageConverter); } // if (messageConverter instanceof MappingJacksonHttpMessageConverter) { // rebuildJacksonV1((MappingJacksonHttpMessageConverter) messageConverter); // } } } /** * 处理form表单 * form表单通过get方法请求,controller里边的方法中只需设置一个接收的对象即可. */ adapter.getMessageConverters().add(new FormHttpMessageConverter()); }
@SuppressWarnings("unchecked") private HttpMessageConverter<Object> findConverter( Class<? extends HttpMessageConverter<?>> selectedConverterType,MediaType mediaType) { HttpMessageConverter<Object> cached = (HttpMessageConverter<Object>) this.converterCache .get(mediaType); if (cached != null) { return cached; } for (RequestMappingHandlerAdapter handlerAdapter : this.handlerAdapters) { for (HttpMessageConverter<?> converter : handlerAdapter .getMessageConverters()) { if (selectedConverterType.isAssignableFrom(converter.getClass()) && converter.canWrite(EndpointResource.class,mediaType)) { this.converterCache.put(mediaType,converter); return (HttpMessageConverter<Object>) converter; } } } return null; }
@postconstruct public void customizedSupportedMediaTypes() { if (this.beanfactory instanceof Listablebeanfactory) { Map<String,RequestMappingHandlerAdapter> handlerAdapters = ((Listablebeanfactory) this.beanfactory) .getBeansOfType(RequestMappingHandlerAdapter.class); for (Entry<String,RequestMappingHandlerAdapter> entry : handlerAdapters .entrySet()) { RequestMappingHandlerAdapter handlerAdapter = entry.getValue(); for (HttpMessageConverter<?> converter : handlerAdapter .getMessageConverters()) { if (converter instanceof TypeConstrainedMappingJackson2HttpMessageConverter) { ((TypeConstrainedMappingJackson2HttpMessageConverter) converter) .setSupportedMediaTypes( Arrays.asList(MediaTypes.HAL_JSON,MediaType.APPLICATION_JSON)); } } } } }
@Test public void customizationOfSupportedMediaTypesCanBedisabled() { this.context = new AnnotationConfigWebApplicationContext(); this.context.setServletContext(new MockServletContext()); this.context.register(BaseConfig.class); EnvironmentTestUtils.addEnvironment(this.context,"spring.hateoas.use-hal-as-default-json-media-type:false"); this.context.refresh(); RequestMappingHandlerAdapter handlerAdapter = this.context .getBean(RequestMappingHandlerAdapter.class); for (HttpMessageConverter<?> converter : handlerAdapter.getMessageConverters()) { if (converter instanceof TypeConstrainedMappingJackson2HttpMessageConverter) { assertthat(converter.getSupportedMediaTypes()) .containsExactly(MediaTypes.HAL_JSON); } } }
@Bean public WebMvcRegistrations webMvcRegistrations() { return new WebMvcRegistrationsAdapter() { @Override public RequestMappingHandlerMapping getRequestMappingHandlerMapping() { DefaultRequestMappingHandlerMapping mapping = new DefaultRequestMappingHandlerMapping(); mapping.setControllerPostfix("Controller"); mapping.setExcludePatterns(new String[]{ "/js/**","/css/**","/imgs/**" }); return mapping; } @Override public RequestMappingHandlerAdapter getRequestMappingHandlerAdapter() { DefaultRequestMappingHandlerAdapter adapter = new DefaultRequestMappingHandlerAdapter(); adapter.setAutoView(true); return adapter; } }; }
@SuppressWarnings("unchecked") private HttpMessageConverter<Object> findConverter( Class<? extends HttpMessageConverter<?>> selectedConverterType,MediaType mediaType) { if (this.converterCache.containsKey(mediaType)) { return (HttpMessageConverter<Object>) this.converterCache.get(mediaType); } for (RequestMappingHandlerAdapter handlerAdapter : this.handlerAdapters) { for (HttpMessageConverter<?> converter : handlerAdapter .getMessageConverters()) { if (selectedConverterType.isAssignableFrom(converter.getClass()) && converter.canWrite(EndpointResource.class,converter); return (HttpMessageConverter<Object>) converter; } } } return null; }
@postconstruct public void customizedSupportedMediaTypes() { if (this.beanfactory instanceof Listablebeanfactory) { Map<String,MediaType.APPLICATION_JSON)); } } } } }
@Test public void customizationOfSupportedMediaTypesCanBedisabled() { this.context = new AnnotationConfigWebApplicationContext(); this.context.setServletContext(new MockServletContext()); this.context.register(BaseConfig.class); EnvironmentTestUtils.addEnvironment(this.context,"spring.hateoas.use-hal-as-default-json-media-type:false"); this.context.refresh(); RequestMappingHandlerAdapter handlerAdapter = this.context .getBean(RequestMappingHandlerAdapter.class); for (HttpMessageConverter<?> converter : handlerAdapter.getMessageConverters()) { if (converter instanceof TypeConstrainedMappingJackson2HttpMessageConverter) { assertthat(converter.getSupportedMediaTypes()) .containsExactly(MediaTypes.HAL_JSON); } } }
@Bean public SmartinitializingSingleton fluxRequestMappingHandlerAdapterProcessor( RequestMappingHandlerAdapter adapter,FluxHandlerMethodArgumentResolver resolver) { return new SmartinitializingSingleton() { @Override public void afterSingletonsInstantiated() { List<HandlerMethodArgumentResolver> resolvers = new ArrayList<>( adapter.getArgumentResolvers()); resolvers.add(0,resolver); adapter.setArgumentResolvers(resolvers); if (!ClassUtils.isPresent("org.springframework.core.ReactiveAdapter",null)) { List<HandlerMethodReturnValueHandler> handlers = new ArrayList<>( adapter.getReturnValueHandlers()); handlers.add(0,context.getBean(FluxReturnValueHandler.class)); adapter.setReturnValueHandlers(handlers); } } }; }
@Override public void onApplicationEvent(ApplicationEvent event) { if (event instanceof ContextRefreshedEvent) { ApplicationContext applicationContext = ((ContextRefreshedEvent) event).getApplicationContext(); RequestMappingHandlerAdapter adapter = applicationContext.getBean(RequestMappingHandlerAdapter.class); TeapotMappingHandler handler = new TeapotMappingHandler( mapper,getMessageConverters()); List<HandlerMethodArgumentResolver> argumentResolvers = new ArrayList<>(); argumentResolvers.add(handler); argumentResolvers.addAll(adapter.getArgumentResolvers()); adapter.setArgumentResolvers(argumentResolvers); List<HandlerMethodReturnValueHandler> handlers = new ArrayList<>(); handlers.add(handler); // must be first handlers.addAll(adapter.getReturnValueHandlers()); adapter.setReturnValueHandlers(handlers); } }
@SuppressWarnings("unchecked") private HttpMessageConverter<Object> findConverter( Class<? extends HttpMessageConverter<?>> selectedConverterType,converter); return (HttpMessageConverter<Object>) converter; } } } return null; }
@postconstruct public void customizedSupportedMediaTypes() { if (this.beanfactory instanceof Listablebeanfactory) { Map<String,MediaType.APPLICATION_JSON)); } } } } }
@Test public void customizationOfSupportedMediaTypesCanBedisabled() { this.context = new AnnotationConfigWebApplicationContext(); this.context.setServletContext(new MockServletContext()); this.context.register(BaseConfig.class); EnvironmentTestUtils.addEnvironment(this.context,"spring.hateoas.use-hal-as-default-json-media-type:false"); this.context.refresh(); RequestMappingHandlerAdapter handlerAdapter = this.context .getBean(RequestMappingHandlerAdapter.class); for (HttpMessageConverter<?> converter : handlerAdapter.getMessageConverters()) { if (converter instanceof TypeConstrainedMappingJackson2HttpMessageConverter) { assertthat(converter.getSupportedMediaTypes(),contains(MediaTypes.HAL_JSON)); } } }
@Override public Object postProcessAfterInitialization(Object bean,String beanName) throws BeansException { if (bean instanceof RequestMappingHandlerAdapter) { RequestMappingHandlerAdapter adapter = (RequestMappingHandlerAdapter) bean; List<HandlerMethodArgumentResolver> resolvers = new LinkedList<>(); resolvers.addAll(adapter.getArgumentResolvers()); resolvers.replaceAll(handlerMethodArgumentResolver -> { if (handlerMethodArgumentResolver instanceof ServletmodelattributeMethodProcessor) { return new FormmodelattributeMethodProcessor(false); } return handlerMethodArgumentResolver; }); adapter.setArgumentResolvers(resolvers); } return bean; }
public mockmvc mvc(Object controller) { StandalonemockmvcBuilder builder = new StandalonemockmvcBuilder(controller) { @Override protected WebApplicationContext initWebAppContext() { WebApplicationContext context = super.initWebAppContext(); StaticListablebeanfactory beanfactory = (StaticListablebeanfactory)context.getAutowireCapablebeanfactory(); Arrays.stream(beanfactoryUtils.beanNamesForTypeIncludingAncestors(applicationContext,Object.class)) .filter(name -> applicationContext.findAnnotationOnBean(name,ControllerAdvice.class) != null) .forEach(name -> beanfactory.addBean(name,applicationContext.getBean(name))); context.getBean(RequestMappingHandlerAdapter.class).afterPropertiesSet(); return context; } }; return builder.setHandlerExceptionResolvers(handlerExceptionResolver).build(); }
private void registerMvcSingletons(StubWebApplicationContext cxt) { StandaloneConfiguration configuration = new StandaloneConfiguration(); RequestMappingHandlerMapping handlerMapping = configuration.requestMappingHandlerMapping(); handlerMapping.setServletContext(cxt.getServletContext()); handlerMapping.setApplicationContext(cxt); cxt.addBean("requestMappingHandlerMapping",handlerMapping); RequestMappingHandlerAdapter handlerAdapter = configuration.requestMappingHandlerAdapter(); handlerAdapter.setServletContext(cxt.getServletContext()); handlerAdapter.setApplicationContext(cxt); handlerAdapter.afterPropertiesSet(); cxt.addBean("requestMappingHandlerAdapter",handlerAdapter); cxt.addBean("handlerExceptionResolver",configuration.handlerExceptionResolver()); cxt.addBeans(initViewResolvers(cxt)); cxt.addBean(dispatcherServlet.LOCALE_RESOLVER_BEAN_NAME,this.localeResolver); cxt.addBean(dispatcherServlet.THEME_RESOLVER_BEAN_NAME,new FixedThemeResolver()); cxt.addBean(dispatcherServlet.REQUEST_TO_VIEW_NAME_TRANSLATOR_BEAN_NAME,new DefaultRequestToViewNameTranslator()); this.flashMapManager = new SessionFlashMapManager(); cxt.addBean(dispatcherServlet.FLASH_MAP_MANAGER_BEAN_NAME,this.flashMapManager); }
@Test(expected=TypeMismatchException.class) public void testCustomConversionService() throws Exception { loadBeanDeFinitions("mvc-config-custom-conversion-service.xml",12); RequestMappingHandlerMapping mapping = appContext.getBean(RequestMappingHandlerMapping.class); assertNotNull(mapping); mapping.setDefaultHandler(handlerMethod); // default web binding initializer behavior test MockHttpServletRequest request = new MockHttpServletRequest("GET",handlerMethod); }
@Test public void testCustomValidator() throws Exception { loadBeanDeFinitions("mvc-config-custom-validator.xml",12); RequestMappingHandlerMapping mapping = appContext.getBean(RequestMappingHandlerMapping.class); assertNotNull(mapping); assertFalse(mapping.getUrlPathHelper().shouldRemoveSemicolonContent()); RequestMappingHandlerAdapter adapter = appContext.getBean(RequestMappingHandlerAdapter.class); assertNotNull(adapter); assertEquals(true,handlerMethod); assertTrue(appContext.getBean(TestValidator.class).validatorInvoked); assertFalse(handler.recordedValidationError); }
@Test public void testAsyncSupportOptions() throws Exception { loadBeanDeFinitions("mvc-config-async-support.xml",13); RequestMappingHandlerAdapter adapter = appContext.getBean(RequestMappingHandlerAdapter.class); assertNotNull(adapter); DirectFieldAccessor fieldAccessor = new DirectFieldAccessor(adapter); assertEquals(ConcurrentTaskExecutor.class,deferredResultInterceptors.length); }
@Test public void requestMappingHandlerAdapter() throws Exception { RequestMappingHandlerAdapter adapter = mvcConfiguration.requestMappingHandlerAdapter(); List<HttpMessageConverter<?>> expectedConverters = new ArrayList<HttpMessageConverter<?>>(); mvcConfiguration.addDefaultHttpMessageConverters(expectedConverters); assertEquals(expectedConverters.size(),adapter.getMessageConverters().size()); ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer) adapter.getWebBindingInitializer(); assertNotNull(initializer); ConversionService conversionService = initializer.getConversionService(); assertNotNull(conversionService); assertTrue(conversionService instanceof FormattingConversionService); Validator validator = initializer.getValidator(); assertNotNull(validator); assertTrue(validator instanceof LocalValidatorfactorybean); }
@Test public void requestMappingHandlerAdapter() throws Exception { delegatingConfig.setConfigurers(Arrays.asList(WebMvcConfigurer)); RequestMappingHandlerAdapter adapter = delegatingConfig.requestMappingHandlerAdapter(); ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer) adapter.getWebBindingInitializer(); ConversionService initializerConversionService = initializer.getConversionService(); assertTrue(initializer.getValidator() instanceof LocalValidatorfactorybean); verify(WebMvcConfigurer).configureMessageConverters(converters.capture()); verify(WebMvcConfigurer).configureContentNegotiation(contentNegotiationConfigurer.capture()); verify(WebMvcConfigurer).addFormatters(conversionService.capture()); verify(WebMvcConfigurer).addArgumentResolvers(resolvers.capture()); verify(WebMvcConfigurer).addReturnValueHandlers(handlers.capture()); verify(WebMvcConfigurer).configureAsyncSupport(asyncConfigurer.capture()); assertSame(conversionService.getValue(),adapter.getMessageConverters()); assertNotNull(asyncConfigurer); }
@Override public void onApplicationEvent(ContextRefreshedEvent event) { RequestMappingHandlerAdapter adapter = event.getApplicationContext().getBean(RequestMappingHandlerAdapter.class); try { FacadeBuilderHandlerMethodArgumentResolver facadeBuilderHandlerMethodArgumentResolver = event.getApplicationContext().getBean(FacadeBuilderHandlerMethodArgumentResolver.class); List<HandlerMethodArgumentResolver> argumentResolvers = new ArrayList<>(adapter.getArgumentResolvers()); List<HandlerMethodArgumentResolver> customresolvers = adapter.getCustomArgumentResolvers(); argumentResolvers.remove(facadeBuilderHandlerMethodArgumentResolver); argumentResolvers.add(0,facadeBuilderHandlerMethodArgumentResolver); adapter.setArgumentResolvers(argumentResolvers); } catch (BeansException e) { //e.printstacktrace(); } }
@Test public void enableSns_withMinimalConfig_shouldConfigureACompositeArgumentResolver() throws Exception { // Arrange & Act this.webApplicationContext.register(MinimalSnsConfiguration.class); this.webApplicationContext.refresh(); RequestMappingHandlerAdapter requestMappingHandlerAdapter = this.webApplicationContext.getBean(RequestMappingHandlerAdapter.class); // Assert assertEquals(1,requestMappingHandlerAdapter.getCustomArgumentResolvers().size()); HandlerMethodArgumentResolver argumentResolver = requestMappingHandlerAdapter.getCustomArgumentResolvers().get(0); assertTrue(HandlerMethodArgumentResolverComposite.class.isinstance(argumentResolver)); HandlerMethodArgumentResolverComposite compositeArgumentResolver = (HandlerMethodArgumentResolverComposite) argumentResolver; assertEquals(3,compositeArgumentResolver.getResolvers().size()); assertNotNull(ReflectionTestUtils.getField(getNotificationStatusHandlerMethodArgumentResolver(compositeArgumentResolver.getResolvers()),"amazonSns")); }
public Object postProcessAfterInitialization(Object bean,String beanName) throws BeansException { if (bean instanceof RequestMappingHandlerAdapter) { RequestMappingHandlerAdapter adapter = (RequestMappingHandlerAdapter) bean; List<HttpMessageConverter<?>> converters = adapter.getMessageConverters(); for (HttpMessageConverter<?> converter : converters) { if (converter instanceof MappingJackson2HttpMessageConverter) { MappingJackson2HttpMessageConverter jsonConverter = (MappingJackson2HttpMessageConverter) converter; ObjectMapper objectMapper = new ObjectMapper(); SimpleModule module = new SimpleModule("Alfresco MVC Module",new Version(1,null,null)); module.addSerializer(QName.class,new Jackson2qnameserializer(serviceRegistry)); module.addDeserializer(QName.class,new Jackson2QnameDeserializer(serviceRegistry)); objectMapper.setDateFormat(new SimpleDateFormat(getDateFormat())); objectMapper.registerModule(module); jsonConverter.setobjectMapper(objectMapper); } } } return bean; }
@Override public Object postProcessBeforeInitialization(Object bean,String s) { if (bean instanceof RequestMappingHandlerAdapter) { ((RequestMappingHandlerAdapter) bean).getMessageConverters().stream() .filter(converter -> converter instanceof MappingJackson2HttpMessageConverter) .forEach(converter -> { MappingJackson2HttpMessageConverter halConverterCandidate = (MappingJackson2HttpMessageConverter) converter; ObjectMapper objectMapper = halConverterCandidate.getobjectMapper(); if (Jackson2HalModule.isAlreadyRegisteredIn(objectMapper)) { List<MediaType> vendorSpecificTypes = new ArrayList<>(halConverterCandidate.getSupportedMediaTypes()); vendorSpecificTypes.add(V1MediaType.V1_HAL_DOCUMENT_COLLECTION_MEDIA_TYPE); vendorSpecificTypes.add(V1MediaType.V1_HAL_DOCUMENT_MEDIA_TYPE); vendorSpecificTypes.add(V1MediaType.V1_HAL_FOLDER_MEDIA_TYPE); vendorSpecificTypes.add(V1MediaType.V1_HAL_DOCUMENT_CONTENT_VERSION_MEDIA_TYPE); vendorSpecificTypes.add(V1MediaType.V1_HAL_AUDIT_ENTRY_MEDIA_TYPE); vendorSpecificTypes.add(V1MediaType.V1_HAL_DOCUMENT_AND_MetaDATA_COLLECTION_MEDIA_TYPE); vendorSpecificTypes.add(V1MediaType.V1_DOCUMENT_COLLECTION_MEDIA_TYPE); vendorSpecificTypes.add(V1MediaType.V1_DOCUMENT_MEDIA_TYPE); vendorSpecificTypes.add(V1MediaType.V1_FOLDER_MEDIA_TYPE); vendorSpecificTypes.add(V1MediaType.V1_DOCUMENT_CONTENT_VERSION_MEDIA_TYPE); vendorSpecificTypes.add(V1MediaType.V1_AUDIT_ENTRY_MEDIA_TYPE); ((MappingJackson2HttpMessageConverter) converter).setSupportedMediaTypes(vendorSpecificTypes); } }); } return bean; }
public GuavaLFReturnValueHandler install(RequestMappingHandlerAdapter requestMappingHandlerAdapter) { final List<HandlerMethodReturnValueHandler> originalHandlers = new ArrayList<>( requestMappingHandlerAdapter.getReturnValueHandlers()); final int deferredPos = indexOfType(originalHandlers,DeferredResultMethodReturnValueHandler.class); // Add our handler directly after the deferred handler. originalHandlers.add(deferredPos + 1,this); requestMappingHandlerAdapter.setReturnValueHandlers(originalHandlers); return this; }
/** * Returns a {@link RequestMappingHandlerAdapter} for processing requests * through annotated controller methods. Consider overriding one of these * other more fine-grained methods: * <ul> * <li>{@link #addArgumentResolvers} for adding custom argument resolvers. * <li>{@link #addReturnValueHandlers} for adding custom return value handlers. * <li>{@link #configureMessageConverters} for adding custom message converters. * </ul> */ @Bean public RequestMappingHandlerAdapter requestMappingHandlerAdapter() { List<HandlerMethodArgumentResolver> argumentResolvers = new ArrayList<HandlerMethodArgumentResolver>(); addArgumentResolvers(argumentResolvers); List<HandlerMethodReturnValueHandler> returnValueHandlers = new ArrayList<HandlerMethodReturnValueHandler>(); addReturnValueHandlers(returnValueHandlers); RequestMappingHandlerAdapter adapter = new RequestMappingHandlerAdapter(); adapter.setContentNegotiationManager(mvcContentNegotiationManager()); adapter.setMessageConverters(getMessageConverters()); adapter.setWebBindingInitializer(getConfigurableWebBindingInitializer()); adapter.setCustomArgumentResolvers(argumentResolvers); adapter.setCustomreturnValueHandlers(returnValueHandlers); if (jackson2Present) { List<RequestBodyAdvice> requestBodyAdvices = new ArrayList<RequestBodyAdvice>(); requestBodyAdvices.add(new JsonViewRequestBodyAdvice()); adapter.setRequestBodyAdvice(requestBodyAdvices); List<ResponseBodyAdvice<?>> responseBodyAdvices = new ArrayList<ResponseBodyAdvice<?>>(); responseBodyAdvices.add(new JsonViewResponseBodyAdvice()); adapter.setResponseBodyAdvice(responseBodyAdvices); } AsyncSupportConfigurer configurer = new AsyncSupportConfigurer(); configureAsyncSupport(configurer); if (configurer.getTaskExecutor() != null) { adapter.setTaskExecutor(configurer.getTaskExecutor()); } if (configurer.getTimeout() != null) { adapter.setAsyncRequestTimeout(configurer.getTimeout()); } adapter.setCallableInterceptors(configurer.getCallableInterceptors()); adapter.setDeferredResultInterceptors(configurer.getDeferredResultInterceptors()); return adapter; }
@Test public void webBindingInitializer() throws Exception { RequestMappingHandlerAdapter adapter = this.config.requestMappingHandlerAdapter(); ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer) adapter.getWebBindingInitializer(); assertNotNull(initializer); BeanPropertyBindingResult bindingResult = new BeanPropertyBindingResult(null,""); initializer.getValidator().validate(null,bindingResult); assertEquals("invalid",bindingResult.getAllErrors().get(0).getCode()); String[] codes = initializer.getMessageCodesResolver().resolveMessageCodes("invalid",null); assertEquals("custom.invalid",codes[0]); }
@Test public void requestMappingHandlerAdapter() throws Exception { ApplicationContext context = initContext(WebConfig.class); RequestMappingHandlerAdapter adapter = context.getBean(RequestMappingHandlerAdapter.class); List<HttpMessageConverter<?>> converters = adapter.getMessageConverters(); assertEquals(9,converters.size()); for(HttpMessageConverter<?> converter : converters) { if (converter instanceof AbstractJackson2HttpMessageConverter) { ObjectMapper objectMapper = ((AbstractJackson2HttpMessageConverter)converter).getobjectMapper(); assertFalse(objectMapper.getDeserializationConfig().isEnabled(MapperFeature.DEFAULT_VIEW_INCLUSION)); assertFalse(objectMapper.getSerializationConfig().isEnabled(MapperFeature.DEFAULT_VIEW_INCLUSION)); assertFalse(objectMapper.getDeserializationConfig().isEnabled(DeserializationFeature.FAIL_ON_UNKNowN_PROPERTIES)); if (converter instanceof MappingJackson2XmlHttpMessageConverter) { assertEquals(XmlMapper.class,objectMapper.getClass()); } } } ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer) adapter.getWebBindingInitializer(); assertNotNull(initializer); ConversionService conversionService = initializer.getConversionService(); assertNotNull(conversionService); assertTrue(conversionService instanceof FormattingConversionService); Validator validator = initializer.getValidator(); assertNotNull(validator); assertTrue(validator instanceof LocalValidatorfactorybean); DirectFieldAccessor fieldAccessor = new DirectFieldAccessor(adapter); @SuppressWarnings("unchecked") List<Object> bodyAdvice = (List<Object>) fieldAccessor.getPropertyValue("requestResponseBodyAdvice"); assertEquals(2,bodyAdvice.size()); assertEquals(JsonViewRequestBodyAdvice.class,bodyAdvice.get(0).getClass()); assertEquals(JsonViewResponseBodyAdvice.class,bodyAdvice.get(1).getClass()); }
@Test public void testMessageCodesResolver() { loadBeanDeFinitions("mvc-config-message-codes-resolver.xml"); RequestMappingHandlerAdapter adapter = appContext.getBean(RequestMappingHandlerAdapter.class); assertNotNull(adapter); Object initializer = adapter.getWebBindingInitializer(); assertNotNull(initializer); MessageCodesResolver resolver = ((ConfigurableWebBindingInitializer) initializer).getMessageCodesResolver(); assertNotNull(resolver); assertEquals(TestMessageCodesResolver.class,resolver.getClass()); assertEquals(false,new DirectFieldAccessor(adapter).getPropertyValue("ignoreDefaultModelOnRedirect")); }
@Test public void testMessageConverters() { loadBeanDeFinitions("mvc-config-message-converters.xml"); verifyMessageConverters(appContext.getBean(RequestMappingHandlerAdapter.class),true); verifyMessageConverters(appContext.getBean(ExceptionHandlerExceptionResolver.class),true); verifyRequestResponseBodyAdvice(appContext.getBean(RequestMappingHandlerAdapter.class)); verifyResponseBodyAdvice(appContext.getBean(ExceptionHandlerExceptionResolver.class)); }
@SuppressWarnings("unchecked") @Test public void testReturnValueHandlers() { loadBeanDeFinitions("mvc-config-return-value-handlers.xml"); RequestMappingHandlerAdapter adapter = appContext.getBean(RequestMappingHandlerAdapter.class); assertNotNull(adapter); Object value = new DirectFieldAccessor(adapter).getPropertyValue("customreturnValueHandlers"); assertNotNull(value); assertTrue(value instanceof List); List<HandlerMethodReturnValueHandler> handlers = (List<HandlerMethodReturnValueHandler>) value; assertEquals(2,handlers.size()); assertEquals(TestHandlerMethodReturnValueHandler.class,handlers.get(0).getClass()); assertEquals(TestHandlerMethodReturnValueHandler.class,handlers.get(1).getClass()); assertNotSame(handlers.get(0),handlers.get(1)); }
private void registerMvcSingletons(StubWebApplicationContext wac) { StandaloneConfiguration config = new StandaloneConfiguration(); config.setApplicationContext(wac); wac.addBeans(this.controllerAdvice); StaticRequestMappingHandlerMapping hm = config.getHandlerMapping(); hm.setServletContext(wac.getServletContext()); hm.setApplicationContext(wac); hm.afterPropertiesSet(); hm.registerHandlers(this.controllers); wac.addBean("requestMappingHandlerMapping",hm); RequestMappingHandlerAdapter handlerAdapter = config.requestMappingHandlerAdapter(); handlerAdapter.setServletContext(wac.getServletContext()); handlerAdapter.setApplicationContext(wac); handlerAdapter.afterPropertiesSet(); wac.addBean("requestMappingHandlerAdapter",handlerAdapter); wac.addBean("handlerExceptionResolver",config.handlerExceptionResolver()); wac.addBeans(initViewResolvers(wac)); wac.addBean(dispatcherServlet.LOCALE_RESOLVER_BEAN_NAME,this.localeResolver); wac.addBean(dispatcherServlet.THEME_RESOLVER_BEAN_NAME,new FixedThemeResolver()); wac.addBean(dispatcherServlet.REQUEST_TO_VIEW_NAME_TRANSLATOR_BEAN_NAME,new DefaultRequestToViewNameTranslator()); this.flashMapManager = new SessionFlashMapManager(); wac.addBean(dispatcherServlet.FLASH_MAP_MANAGER_BEAN_NAME,this.flashMapManager); }
今天关于创建名称为'requestMappingHandlerAdapter'的bean时出错和创建名称为shopingmall的django项目,使用的命令是的介绍到此结束,谢谢您的阅读,有关idea 报错 Error creating bean with name ''requestMappingHandlerMapping'' defined in class path...、java – RequestMappingHandlerMapping.getHandlerInternal:230 – 没有找到处理程序方法、java – 创建名为defaultServletHandlerMapping的bean时出错、org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter的实例源码等更多相关知识的信息可以在本站进行查询。
本文标签: