`
bonedream
  • 浏览: 13519 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

spring 注解控制器 配置控制器 冲突问题解决?

阅读更多
我最近在旧的项目中增加spring的注解控制的配置器,却发现怎么配置都是PageNotFound。然后我把旧的基于配置的控制器删除后,只留下注解的控制器,却能够找到注解的控制器映射,是否两者存在冲突问题,能共存吗?
下面是我的测试代码:

基于注解的控制器:
@Controller
public class TestController {

@RequestMapping("/test.do")
public String test(){
return "test";
}
}
基于配置的控制器:
public class DemoController extends AbstractController{

protected ModelAndView handleRequestInternal(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
return new ModelAndView("test");
}

}
配置文件
demo-servlet.xml :

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<context:annotation-config />
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<context:component-scan base-package="com.test" />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/"
p:suffix=".jsp"/>

<bean id="handlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean name="/demo.do" class="com.test.DemoController"/>

</beans>
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>demo</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/demo-*.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>demo</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>demo</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>

依据以上的配置测试,如果找demo.do能找到,找test.do就会报告PageNotFound问题?但如果把demo-servlet.xml配置文件去掉demo.do的配置,去掉部分:
<bean id="handlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean name="/demo.do" class="com.test.DemoController"/>
在测试的话,test.do就可以找到。
这是冲突呢,还是有什么配置我没有配上?搞不懂
分享到:
评论
2 楼 former 2008-08-05  
同意楼上。
DefaultAnnotationHandlerMapping是默认配置,如果你配置了BeanNameUrlHandlerMapping就覆盖了默认配置。使用@Controller的Controller就不能被处理器认到。
如果你要混用2个HandlerMapping,可以在配置文件中将DefaultAnnotationHandlerMapping和BeanNameUrlHandlerMapping都声明一下。
1 楼 小疯子 2008-08-05  
<p>少配了一个HandlerMapping</p>
<pre name='code' class='java'>&lt;bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" /&gt;</pre>
<p> 其实一般情况下你可以不用配HandlerMapping和HandlerAdapter, 因为Spring MVC提供了一组默认的配置, 具体的参见spring-webmvc.jar包中的org/springframework/web/servlet/DispatcherServlet.properties文件</p>

相关推荐

    spring注解开发--Bean加载控制.zip

    `@Component`是最基础的注解,其他三个是其特化的版本,分别对应服务层、数据访问层和控制器层。 2. **自动扫描(Component Scanning)** Spring通过`@ComponentScan`注解来自动发现和注册带有特定注解的bean。你...

    spring注解实现注入.zip

    `@Component`是最基础的注解,其他三个是它的特化版本,分别适用于服务层、数据访问层和控制器层。 5. **@Inject 注解** 虽然不是Spring原生的注解,但JSR-330的`@Inject`注解也支持在Spring中使用。它与`@...

    spring注解大全和应用

    1. **@Controller**:此注解用于标记一个类作为Spring MVC的控制器,处理HTTP请求。控制器类通常包含处理用户请求的方法,通过`@RequestMapping`注解来指定处理特定URL的请求。 2. **@RestController**:自Spring 4...

    springmvc + spring + mybatis + maven整合配置文件

    它提供了一种模型-视图-控制器的设计模式,使得开发者可以将业务逻辑、数据和用户界面分离。Spring MVC的核心组件包括DispatcherServlet、HandlerMapping、Controller、ViewResolver等。 1. **DispatcherServlet**...

    解决spring自增型主键问题

    本文将深入探讨如何在SQL Server 2008环境下解决自增型主键的问题,以及如何在Spring框架下进行有效的主键生成策略配置。 ### SQL Server 2008自增型主键问题 SQL Server 2008中的自增型主键,通常通过设置列属性...

    在myeclipse自动提示spring的配置信息

    在团队环境中,使用版本控制系统如Git或SVN管理代码时,MyEclipse的Spring插件能确保在多人协作时保持配置的一致性,减少因配置冲突带来的问题。 总结来说,MyEclipse的Spring自动提示功能是Spring开发中的得力...

    ssh注解零配置增删改查,Spring+hibernate+Struts2

    在这个案例中,项目可以直接在MyEclipse中运行,表明所有必要的库和依赖都已经包含在内,且没有版本冲突问题。 **数据库连接**:由于数据库表是在代码中定义的,可能使用了Spring的JDBC模板或者Hibernate的...

    Spring MVC 4.1.3 + MyBatis零基础搭建Web开发框架(注解模式)

    接下来,我们将用注解来简化控制器的编写。Spring MVC的注解如`@Controller`、`@RequestMapping`、`@GetMapping`、`@PostMapping`等,使得我们可以直接在方法上定义路由和操作,无需传统的XML配置。 在MyBatis中,...

    拦截器与冲突解决

    这个问题通常出现在当我们试图同时配置基于注解的控制器处理和自定义拦截器时,Spring可能无法正确地处理这些组件的执行顺序。 首先,我们需要理解`&lt;mvc:annotation-driven /&gt;`的作用。它是Spring MVC配置中的一个...

    Spring Boot面试题(2022最新版)-重点

    可以在控制器建议类中定义异常处理方法,返回特定的视图或 JSON 响应。 **6.10 如何使用 Spring Boot 实现分页和排序?** Spring Boot 支持通过 Spring Data JPA 或者自定义查询来实现分页和排序。可以使用 `...

    十分钟上手spring boot

    - 使用这些注解来定义RESTful API控制器。 - **11.3.2. @EnableAutoConfiguration注解** - 启用Spring Boot的自动配置功能。 - **11.3.3. main方法** - 编写main方法来启动Spring Boot应用。 - **11.4. 运行...

    spring boot面试题及答案.pdf

    在Spring Boot中,可以通过在控制器或全局级别使用`@CrossOrigin`注解来启用CORS策略,允许指定来源的跨域请求。 3. **Spring Boot的核心配置文件有哪些?** 主要包括`application.properties`和`bootstrap.yml`...

    spring4.0框架demo

    4. 数据绑定与验证:模型数据可以直接绑定到控制器方法的参数上,同时支持JSR-303/JSR-349验证,确保数据的准确性和完整性。 5. RESTful支持:Spring MVC 4.0加强了对RESTful风格的支持,通过@RequestMapping注解...

    Spring_MVC框架的高级配置

    前者主要用来配置业务逻辑层的Bean,如数据源、服务类等,后者则关注Web层的配置,如视图解析器、控制器等。然而,当涉及到不同环境(如开发、测试、生产)时,这些配置文件中的一些参数需要根据实际环境调整,如...

    49道Spring Boot面试题带答案(很全)

    Spring Boot 是一个旨在简化Spring应用程序开发的框架,它在Spring 4.0的基础上构建,集成了Spring框架的诸多优秀特性并解决了依赖版本冲突和引用不稳定性的问题。Spring Boot的核心目标是通过自动化配置来减少手动...

    SSH整合(注解方式)dataSource配置defaultAutoCommit启动报错

    1. **检查事务管理配置**:确保你的Spring配置文件中关于事务管理器(如`PlatformTransactionManager`)的配置正确。如果你使用的是注解方式的事务管理,确保`@Transactional`注解的使用无误。 2. **调整`...

    Struts Hibernate Spring 配置篇

    解决这个问题通常需要在Spring的事务配置中添加`proxyTargetClass="true"`,以启用CGLIB代理而不是JDK动态代理。 整合后的SSH应用能够提供一个高效、灵活的架构,通过分离关注点,使开发更易于测试和维护。在Spring...

    spring没有提示的时候

    4. **配置问题**:Spring的XML配置或Java配置文件可能存在问题。检查`application.xml`或`@Configuration`类,确保所有的Bean定义正确无误,没有语法错误或漏掉的属性。 5. **Classpath问题**:类路径设置不正确也...

Global site tag (gtag.js) - Google Analytics