有如下一个配置
<context:component-scan base-package="com.myapp.aop.introduce" /> <bean id="forumService" class="org.springframework.aop.framework.ProxyFactoryBean" p:interfaces="com.myapp.aop.introduce.Monitorable" p:target-ref="forumServiceTarget" p:interceptorNames="pmonitor" p:proxyTargetClass="true" />
在第一个测试中
@Test public void test() { String configPath = "/aop/introduce/applicationContext.xml"; ApplicationContext ctx = new ClassPathXmlApplicationContext(configPath); ForumService forumService = (ForumService) ctx.getBean("forumService"); forumService.removeForum(10); forumService.removeTopic(1022); Monitorable moniterable = (Monitorable) forumService; moniterable.setMonitorActive(true); forumService.removeForum(10); forumService.removeTopic(1022); }
可以正常运行
通过@ContextConfiguration加载配置文件,方法如下
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "/aop/introduce/applicationContext.xml" }) public class ForumServiceTest{ @Autowired @Qualifier(value = "forumService") ForumService forumService; @Test public void test() { forumService.removeForum(10); forumService.removeTopic(1022); Monitorable moniterable = (Monitorable)forumService; moniterable.setMonitorActive(true); forumService.removeForum(10); forumService.removeTopic(1022); } }
抛出org.springframework.beans.factory.NoSuchBeanDefinitionException的异常,指向forumService不存在
其他主要代码:
public interface Monitorable{ void setMonitorActive(boolean active); }
@Component(value = "pmonitor") public class ControllablePerformaceMonitor extends DelegatingIntroductionInterceptor implements Monitorable{ private static final long serialVersionUID = 7120067058565963790L; private ThreadLocal<Boolean> MonitorStatusMap = new ThreadLocal<Boolean>(); public void setMonitorActive(boolean active) { MonitorStatusMap.set(active); } public Object invoke(MethodInvocation mi) throws Throwable { Object obj = null; if (MonitorStatusMap.get() != null && MonitorStatusMap.get()) { PerformanceMonitor.begin(mi.getClass().getName() + "." + mi.getMethod().getName()); obj = super.invoke(mi); PerformanceMonitor.end(); } else { obj = super.invoke(mi); } return obj; } }
@Component(value = "forumServiceTarget") public class ForumService{ public void removeTopic(int topicId) { System.out.println("模拟删除Topic记录:" + topicId); try { Thread.currentThread().sleep(20); } catch (Exception e) { throw new RuntimeException(e); } } public void removeForum(int forumId) { System.out.println("模拟删除Forum记录:" + forumId); try { Thread.currentThread().sleep(40); } catch (Exception e) { throw new RuntimeException(e); } } }
注:通过第二种方式测试AOP的前置、后置、环绕、异常后置增强均通过
@ContextConfiguration(locations = { "classpath:/aop/introduce/applicationContext.xml" }) 这么写也不行
相关推荐
在3.2.2版本中,Web Flow提供了更好的可测试性,以及对Spring MVC的更紧密集成。 6. **容器增强**: Spring 3.2.2引入了对Java 7的完全支持,包括多线程和并发API的改进。此外,还增强了容器的性能和稳定性,比如...
6. **spring-test-3.2.2.jar**:测试模块提供了对JUnit和TestNG的支持,使得在Spring应用中进行单元测试和集成测试变得容易。它提供了Mock对象和ApplicationContext的便利工具。 7. **spring-jdbc-3.2.2.jar**:...
在本文中,我们将深入探讨如何配置Struts2.3.12、Spring3.2.2和Hibernate4.2.0这三个组件。 1. **Struts2.3.12** Struts2是Apache软件基金会的一个开源MVC框架,用于构建基于Java Servlet的应用程序。它提供了强大...
Spring 3.2.2是该框架的一个稳定版本,它修复了之前版本的一些问题,并引入了新的特性和改进。 2. **Spring 3.2.2 Libs主要内容** "spring-3.2.2 libs"这个压缩包包含了Spring框架的所有核心模块及其依赖库,例如...
8. **测试支持**: 在测试层面,Spring的TestContext框架可以很方便地进行集成测试,模拟数据库操作,确保整个Spring-Mybatis整合的系统能够正常工作。 以上就是"spring3.2.2+mybatis3.1-lib"整合的相关知识点,这个...
在测试方面,Spring Test模块提供了强大的单元测试和集成测试支持。在3.2.2版本中,你可以使用@RunWith(SpringJUnit4ClassRunner.class)注解启动Spring测试环境,配合@Test和@MockBean等注解进行便捷的测试编写。 ...
8. **测试支持**:Spring Test模块提供了方便的单元测试和集成测试工具,如`@RunWith(SpringJUnit4ClassRunner.class)`、`@ContextConfiguration`等,使得测试Spring应用更加便捷。 9. **Spring Expression ...
Spring3.2.2是该框架的一个稳定版本,增强了对其他框架的集成支持,包括Struts2。 **2.1 整合Spring3.2.2** - **添加Spring库**:将spring-context、spring-beans、spring-web等核心库添加到项目中。 - **配置...
9. **改进的测试支持**:提供了更丰富的测试工具和API,包括对Spring MVC的模拟和模拟测试工具,使得单元测试和集成测试更加便捷。 四、实际应用 在实际开发中,Spring Framework 3.2.2.RELEASE可以用于构建各种...
本文档详细介绍了如何配置最新版本的Struts2.3.12、Spring3.2.2和Hibernate4.2.0,以帮助开发者快速搭建SSH整合环境。 1. **导言** - **目的**:本教程旨在为开发者提供一个清晰的步骤,以便在实际项目中快速集成...
这篇博客"spring 2.5.6和hibernate3.2.2集成(1)"显然是关于如何将这两个版本的框架整合到一个项目中的教程。下面我们将深入探讨这两个框架及其集成的关键知识点。 1. Spring框架: - 版本2.5.6:这是一个较旧但...
**Spring** 3.2.2版本是一个全面的企业应用框架,支持AOP(面向切面编程)、DI(依赖注入)和声明式事务管理。`applicationContext-config.xml`、`applicationContext-bean.xml`和`applicationContext-action.xml`是...
这使得单元测试和集成测试更加方便。 最后,`build.xml`文件通常用于Ant构建系统,这是一个Java项目自动化构建工具。通过查看`build.xml`,我们可以了解Spring项目是如何编译、打包、测试和部署的。 总的来说,...
Spring3.2.2是该框架的一个稳定版本,提供了依赖注入、事务管理、数据访问集成、MVC、测试等功能。 3. Hibernate:Hibernate是一个强大的ORM框架,允许开发者使用Java对象来操作数据库,减少了SQL的编写工作。...
- **持续集成与测试**:Spring Test模块支持Junit和Mockito,方便进行单元测试和集成测试。 7. **性能优化** - **缓存支持**:Spring支持多种缓存机制,如 EhCache 和 Redis,提升应用性能。 - **Asynchronous ...
7. **测试支持**:Spring提供了方便的测试工具,包括Mock对象和测试上下文框架,方便单元测试和集成测试。 现在,你已经拥有了Spring 3.2的源码,可以通过以下步骤在项目中使用: 1. **导入源码**:将下载的source...
标题"MVC.rar_SpringMVC_Struts_java_MVC_mvc_...通过分析和运行其中的代码,开发者可以更好地掌握Spring框架的核心功能,包括SpringMVC、Spring AOP以及与Hibernate的集成,同时也能理解MVC模式在实际项目中的运用。
6. **spring-test-3.2.2.RELEASE.jar**:提供了测试支持,帮助开发者进行单元测试和集成测试,可以与其他Spring组件结合使用,提高测试效率。 7. **spring-jdbc-3.2.2.RELEASE.jar**:提供了对JDBC(Java Database ...
7. **测试支持**:Spring 提供了针对Spring应用的单元测试和集成测试框架,包括模拟对象(Mock Objects)和测试上下文框架。这有助于开发者编写可测试的代码。 8. **国际化支持**:Spring 提供了本地化和消息资源...
- **4.2.1 单元测试与集成测试**:介绍如何为Spring应用编写单元测试和集成测试。 - **4.2.2 应用的部署策略**:讨论Spring应用的不同部署方案。 以上是对《Spring in Action 中文版(第4版)》这本书的主要知识点...