spring java配置问题:拒绝的bean名称'requestMappingHandlerMapping':没有标识的URL路径

时间:2012-06-04 17:56:20

标签: spring java-ee tomcat spring-mvc classloader

我使用spring java configs创建一个Web应用程序。

当我在tomcat上运行时,它说资源/ myapp / myapp未找到

在控制台输出中,我注意到以下内容。我不确定这是否会导致任何问题。

我只显示那些奇怪的日志行。因为日志太大了

INFO: validateJarFile(C:\libraries\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\myapp\WEB-INF\lib\javax.servlet-api-3.0.1.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class


Creating instance of bean 'beanNameHandlerMapping'
Returning cached instance of singleton bean 'delegatingWebMvcConfiguration'
Eagerly caching bean 'beanNameHandlerMapping' to allow for resolving potential circular     references
Looking for URL mappings in application context: Root WebApplicationContext: startup date [Mon J     un 04 13:28:33 EDT 2012]; root of context hierarchy
Rejected bean name  'org.springframework.context.annotation.internalConfigurationAnnotationProcessor': no URL paths identified
Rejected bean name 'org.springframework.context.annotation.internalAutowiredAnnotationProcessor': no URL paths identified
Rejected bean name 'org.springframework.context.annotation.internalRequiredAnnotationProcessor': no URL paths identified
Rejected bean name 'org.springframework.context.annotation.internalCommonAnnotationProcessor': no URL paths identified
Rejected bean name 'webAppContextConfig': no URL paths identified
Rejected bean name 'org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0': no URL paths identified
Rejected bean name 'delegatingWebMvcConfiguration': no URL paths identified
Rejected bean name 'requestMappingHandlerMapping': no URL paths identified
Rejected bean name 'viewControllerHandlerMapping': no URL paths identified
Rejected bean name 'beanNameHandlerMapping': no URL paths identified
Rejected bean name 'resourceHandlerMapping': no URL paths identified
Rejected bean name 'defaultServletHandlerMapping': no URL paths identified
Rejected bean name 'requestMappingHandlerAdapter': no URL paths identified
Rejected bean name 'mvcConversionService': no URL paths identified
Rejected bean name 'mvcValidator': no URL paths identified
Rejected bean name 'httpRequestHandlerAdapter': no URL paths identified
Rejected bean name 'simpleControllerHandlerAdapter': no URL paths identified
Rejected bean name 'handlerExceptionResolver': no URL paths identified
Rejected bean name 'configureInternalResourceViewResolver': no URL paths identified
Rejected bean name 'environment': no URL paths identified
Rejected bean name 'systemProperties': no URL paths identified
Rejected bean name 'systemEnvironment': no URL paths identified
Rejected bean name 'servletContext': no URL paths identified
Rejected bean name 'contextParameters': no URL paths identified
Rejected bean name 'contextAttributes': no URL paths identified
Rejected bean name 'importRegistry': no URL paths identified
Rejected bean name 'messageSource': no URL paths identified
Rejected bean name 'applicationEventMulticaster': no URL paths identified
Finished creating instance of bean 'beanNameHandlerMapping'
Creating shared instance of singleton bean 'resourceHandlerMapping'
Creating instance of bean 'resourceHandlerMapping'
Returning cached instance of singleton bean 'delegatingWebMvcConfiguration'
Eagerly caching bean 'resourceHandlerMapping' to allow for resolving potential circular references
Mapped URL path [/css/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
Mapped URL path [/scripts/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
Mapped URL path [/images/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
Finished creating instance of bean 'resourceHandlerMapping'

这是WebAppContextConfig.java

package com.example;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example")
public class WebAppContextConfig extends WebMvcConfigurerAdapter{
//Resolve logical view names to .jsp resources in /WEB-INF/views directory

@Bean
public InternalResourceViewResolver configureInternalResourceViewResolver() {
    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
    resolver.setPrefix("WEB-INF/jsp/");
    resolver.setSuffix(".jsp");
    return resolver;
}

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/scripts/**").addResourceLocations("/scripts/");
    registry.addResourceHandler("/css/**").addResourceLocations("/css/");
    registry.addResourceHandler("/images/**").addResourceLocations("/images/");
}
}

这是WebAppInitializer.java

 package com.example;

 import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
 import javax.servlet.ServletRegistration;

 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.web.WebApplicationInitializer;
 import org.springframework.web.context.ContextLoaderListener;
 import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
 import org.springframework.web.servlet.DispatcherServlet;
 import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;

 public class WebAppInitializer implements WebApplicationInitializer {

/* (non-Javadoc)
 * @see org.springframework.web.WebApplicationInitializer#onStartup(javax.servlet.ServletContext)
 */
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
    AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
    rootContext.register(WebAppContextConfig.class);
    servletContext.addListener(new ContextLoaderListener(rootContext));

      AnnotationConfigWebApplicationContext dispatcherContext = 
                new AnnotationConfigWebApplicationContext();
              dispatcherContext.register(WebAppContextConfig.class);

    ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher", new DispatcherServlet(rootContext));
    dispatcher.setLoadOnStartup(1);
    dispatcher.addMapping("/");


    DefaultServletHandlerConfigurer defaultConfig = new DefaultServletHandlerConfigurer(servletContext);
    defaultConfig.enable();

}

}

还有什么好地方可以找到基于java的spring mvc配置吗?

由于

1 个答案:

答案 0 :(得分:2)

这不是@ravi的根本原因,但我确实看到了一些我想要强调的问题:

一个。您似乎通过ContextLoaderListener和Dispatcher servlet两次加载Spring Java Config文件,只通过ContextLoaderListener执行,您可以通过这种方式定义DispatcherServlet - 只需加载一个空上下文(理想情况下有两个java配置 - 一个用于核心应用程序,一个用于Web配置):

ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher", new GenericWebApplicationContext());
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");

湾你能用log4j启用调试模式并查看还记录了什么 - 如果这不是足够的信息,请记录跟踪级别。

℃。内部视图解析器路径看起来有点不对 - 你错过了前进“/”:

resolver.setPrefix("/WEB-INF/jsp/");

请你试试这些,看看你现在看到了什么。