Spring MVC项目中通常会有二个配置文件,spring-servlet.xml和applicationContext.xml二个配置文件,通常会出现以下几个配置:
1. <context:annotation-config />
它的作用是隐式地向 Spring 容器注册
- AutowiredAnnotationBeanPostProcessor、
- CommonAnnotationBeanPostProcessor、
- PersistenceAnnotationBeanPostProcessor、
- RequiredAnnotationBeanPostProcessor 这4个BeanPostProcessor。
其作用是如果你想在程序中使用注解,就必须先注册该注解对应的类,如下图所示:
依赖的类 | 注解 |
CommonAnnotationBeanPostProcessor | @Resource 、@PostConstruct、@PreDestroy |
PersistenceAnnotationBeanPostProcessor | @PersistenceContext |
AutowiredAnnotationBeanPostProcessor | @Autowired |
RequiredAnnotationBeanPostProcessor | @Required |
当然也可以自己进行注册:
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor "/>
<bean class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor"/>
2. <context:component-scan base-package="com.*" >
<context:component-scan/> 配置项不但启用了对类包进行扫描以实施注释驱动 Bean 定义的功能,同时还启用了注释驱动自动注入的功能(即还隐式地在内部注册了 AutowiredAnnotationBeanPostProcessor 和 CommonAnnotationBeanPostProcessor),因此当使用 <context:component-scan/> 后,就可以将 <context:annotation-config/> 移除了。
在这里有一个比较有意思的问题,就是扫描是否需要在二个配置文件都配置一遍,我做了这么几种测试:
(1)只在applicationContext.xml中配置如下
<context:component-scan base-package="com.login" />
启动正常,但是任何请求都不会被拦截,简而言之就是@Controller失效
(2)只在spring-servlet.xml中配置上述配置
启动正常,请求也正常,但是事物失效,也就是不能进行回滚
(3)在applicationContext.xml和spring-servlet.xml中都配置上述信息
启动正常,请求正常,也是事物失效,不能进行回滚
(4)在applicationContext.xml中配置如下
<context:component-scan base-package="com.login" />
在spring-servlet.xml中配置如下
<context:component-scan base-package="com.sohu.login.web" />
此时启动正常,请求正常,事物也正常了。
结论:在spring-servlet.xml中只需要扫描所有带@Controller注解的类,在applicationContext中可以扫描所有其他带有注解的类(也可以过滤掉带@Controller注解的类)。
3. <mvc:annotation-driven />
它会自动注册DefaultAnnotationHandlerMapping 与AnnotationMethodHandlerAdapter
相关推荐
Spring、SpringMVC和MyBatis是Java Web开发中非常流行的三大框架,它们共同构建了高效、灵活的企业级应用程序。这个项目将这三个框架整合在一起,为开发者提供了一个基础的SSM(Spring+SpringMVC+MyBatis)应用模板...
Spring、SpringMVC和MyBatis是Java Web开发中非常流行的三大框架,它们共同构建了一个高效、松耦合的应用架构。Maven作为项目管理和构建工具,使得这些框架的集成更加便捷。下面将详细介绍如何整合这四个关键技术...
5. **编写业务逻辑**:使用Spring的注解(如@Service、@Repository)标记业务层和服务层的类,使用MyBatis的注解(@Select、@Insert等)在DAO接口中定义SQL语句。 6. **测试与调试**:编写JUnit测试用例,验证SSM...
- 使用@Service、@Repository和@Controller注解标记业务层、数据访问层和控制层类。 - 在IDEA中安装Lombok插件,确保IDEA能识别Lombok的注解并自动生成相应代码。 - 编写index.jsp作为项目的入口页面,位于Web-...
在本项目中,我们主要探讨的是如何利用SpringMVC注解和Mybatis框架来构建一个与ExtJS 5.0前端交互的后台管理框架。这是一个常见的企业级应用开发模式,旨在提供高效、灵活且易于维护的系统。让我们逐一分析这个项目...
在`bean.xml`中,我们启用注解配置,以便可以使用Spring的注解如@Service和@Repository,同时避免与Spring MVC的@Controller注解冲突。这部分配置如下: ```xml *"> ...
本项目针对旧版本SSH存在的问题,如Spring版本过低和Hibernate版本过低,以及可能的jar包冲突进行了更新和整合。 首先,Spring 4.1引入了许多改进和新特性。例如,它加强了对Java 8的支持,包括日期和时间API的改进...
在Spring + SpringMVC 整合 MyBatis 的过程中,可能会遇到Mapper注入失败的问题,这个问题通常是由于配置不正确或者依赖冲突导致的。以下是一些可能导致此类问题的原因和相应的解决策略。 1. **Spring Context未...
- **MyBatis-Spring**:这是一个整合框架,用于将 MyBatis 与 Spring 结合,提供事务管理、自动扫描 Mapper 接口等功能。 - **SqlSessionTemplate** 和 **SqlSessionManager**:这两个类是 MyBatis-Spring 提供的...
例如,确保数据库连接信息正确、配置文件中的路径匹配实体类和 Mapper 文件、以及 Spring 的扫描范围包含所有必要的组件。 在实际使用中,MyBatis-Plus 提供的功能包括但不限于: - **条件构造器**:通过 `Query...
3. **事务控制**:通常在Service层使用@Transactional注解进行事务控制,Spring会自动管理事务的开启、提交和回滚。 4. **异常处理**:在Controller层捕获并处理可能抛出的异常,确保正常响应。 这些jar包的集合...
SpringMVC 是一个基于 Java 的实现了 MVC 设计模式的请求驱动类型的轻量级 Web 框架,通过提供注解来简化 Web 层的开发。IntelliJ IDEA 是一个商业化的 Java IDE,它支持各种框架的项目搭建和开发。 在 IntelliJ ...
同时,通过Spring的MapperScannerConfigurer或@MapperScan注解扫描Mapper接口,实现自动装配。 错误解决方案文档可能涵盖了以下几个方面: 1. 配置问题:如Spring的配置文件中缺少必要组件的声明,MyBatis的配置...
在Spring框架中,注解注入是一种非常常用且强大的依赖注入(Dependency Injection,简称DI)...同时,结合组件扫描、配置类以及各种作用域和环境注解,Spring为开发者提供了丰富的工具来构建松散耦合、易于测试的系统。
在Spring MVC和MyBatis的集成中,我们需要在`springmvc-mybatis.xml`中定义数据源、SqlSessionFactory以及Mapper扫描器。数据源配置连接到MySQL数据库,SqlSessionFactory创建会话工厂,而Mapper扫描器则允许Spring...
在 spring.xml 文件中,配置数据源、扫描注解类以便 Spring 初始化。在 spring-mybatis.xml 文件中,配置 SQLSessionFactory、MapperScannerConfigurer,扫描接口所在的包,使得 Service 可以调用相关方法。 3. **...
数据源配置用于连接数据库,SqlSessionFactoryBean生成SqlSessionFactory,MapperScannerConfigurer扫描Mapper接口,自动加载到Spring容器中。 接下来,我们需要配置MyBatis的SqlSessionFactory,包括设置数据源、...
- `<context:component-scan>`:扫描带有特定注解(如@Controller、@Service、@Repository)的类,自动注册到Spring容器中。 - `<mvc:view-resolvers>`:配置视图解析器,如`InternalResourceViewResolver`,指定...
2. **spring-core-4.1.3.RELEASE.jar**:Spring的核心库,包含IoC(Inversion of Control)容器的基础类和工具,如Bean工厂、Resource接口等。它是Spring其他模块的基础。 3. **spring-webmvc-4.1.3.RELEASE.jar**...
4. **配置Hibernate实体扫描**:在Spring配置中添加扫描注解实体类的路径。 5. **配置Spring MVC**:定义视图解析器,处理器映射器和处理器适配器。 6. **编写业务逻辑**:使用Spring的`@Service`注解标记业务层组件...