在主容器中(applicationContext.xml),将Controller的注解排除掉
1
2
3
|
< context:component-scan base-package = "com" >
< context:exclude-filter type = "annotation" expression = "org.springframework.stereotype.Controller" />
</ context:component-scan >
|
而在springMVC配置文件中将Service注解给去掉
1
2
3
4
|
< context:component-scan base-package = "com" >
< context:include-filter type = "annotation" expression = "org.springframework.stereotype.Controller" />
< context:exclude-filter type = "annotation" expression = "org.springframework.stereotype.Service" />
</ context:component-scan >
|
两套上下文的问题:
因为spring的context是父子容器,所以会产生冲突,由ServletContextListener产生的是父容器,springMVC产生的是子容器,子容器Controller进行扫描装配时装配了@Service注解的实例,而该实例理应由父容器进行初始化以保证事务的增强处理,所以此时得到的将是原样的Service(没有经过事务加强处理,故而没有事务处理能力。
还有一种方式是将service层改用xml配置,其实这样做也是变相的让springmvc无法扫描service,而只能依赖父窗口也就是ServletContextListener来进行初始化,这样同样被赋予了事务性。
相关推荐
在 application.xml 中配置的事务管理会被 SpringMVC 重复扫描,导致事务管理无效。 解决办法 要解决 Spring+SpringMVC 配置事务管理无效的问题,需要正确配置 Spring 和 SpringMVC 的配置文件。Spring 的配置文件...
在SSM整合中,避免了SpringMVC与Spring注解重复扫描导致的事务失效问题,这可能涉及到Spring的扫描范围设置。当两个不同组件扫描相同范围的类时,可能会出现事务管理器无法正确识别事务边界的问题。通过合理配置扫描...
在Spring MVC中,AOP(面向切面编程)是一种强大的工具,可以让我们在不修改代码的情况下,对程序的特定部分进行增强,例如日志记录、事务管理或性能监控。在这个场景中,我们将讨论如何利用AOP来实现Controller的...
**一、事务传播属性失效问题及解决** 事务传播属性在Spring中用于控制事务边界,但有时可能会遇到配置无效的情况。解决思路是确保从Spring工厂中获取到的是代理类对象,因为事务管理是通过AOP(面向切面编程)实现的...
- **事务管理**:Spring的事务管理可能因为配置不当导致事务无法正常回滚或提交。 - **缓存问题**:Ehcache的配置可能导致缓存失效、更新不及时等问题。 - **资源文件**:国际化消息文件的路径和编码设置不当可能...
在Spring MVC中,Spring Cache抽象可以方便地集成各种缓存解决方案。 4. **数据库优化**: 数据库优化涉及到SQL查询优化、索引设计、事务管理、读写分离、分库分表等。理解如何编写高效的SQL语句,避免全表扫描,...
4. 配置Mybatis的SqlSessionFactory,结合Mybatis-Spring的MapperScannerConfigurer扫描Mapper接口。 5. 编写Service、DAO和Mapper接口及XML配置,完成业务逻辑和数据访问。 通过以上步骤,可以构建一个完整的SSM...
解决这些问题通常需要深入理解业务逻辑,优化代码结构,以及合理利用设计模式和框架。 2. **SpringMVC理解**:SpringMVC是一个基于Servlet的Web MVC框架,它通过DispatcherServlet作为前端控制器来接收和分发请求。...
- 主要用于解决线程安全问题。 2. **如何理解volatile关键字** - `volatile` 关键字确保了可见性和禁止指令重排。 - 用于确保共享变量在多线程环境下的正确性。 3. **ReentrantLock中的公平锁和非公平锁的底层...