终于开始写博客啦,坚持原创!
话说这个程序折腾了我一个上午,我比较完美主义,所以要求程序达到最简洁,lib中的jar包数量最少,所以开始的时候有各别包没有导入,导致很奇怪的错误,结果浪费时间。后来一生气把所有的包都放进去,结果没有错误了,然后又一个包一个包的删除看看能不能运行,最终得到了最少的包列表,哈哈哈。
首先,最简洁包列表,共11个包,spring自带包6个和外部下载包5个:
其中使用的是spring 3.0.5,后面的六个包都是spring自带的包,其他包需要另外下载,都保持了最新版,并附上下载地址(都是官方下载哦):
ASM: http://forge.ow2.org/projects/asm/
Aopalliance: http://sourceforge.net/projects/aopalliance/files/aopalliance/
Cglib: http://sourceforge.net/projects/cglib/files/
Common-logging: http://commons.apache.org/logging/download_logging.cgi
Aspectj: http://www.eclipse.org/aspectj/downloads.php
然后,文件结构:
其中aspect类为切面方法,operation类为业务方法,main类为测试方法
下面是代码:operation类业务方法
package com.iteye.twincle.springAOPDemo.main;
public class DisplayOperation {
public void display() {
System.out.println("Test Class DisplayOperation method display execute...");
}
}
aspect类切面方法,其中定义了一个logCalls()方法用于定义切入点,这样以后修改切入点的表达式只需要一次就可以了。aroundLogCalls方法中,使用joinPoint获取切入点上所执行方法的类路径和方法名,并输出
package com.iteye.twincle.springAOPDemo.main;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.annotation.Around;
@Aspect
public class LogAspect {
@Pointcut("execution(* com.iteye.twincle.springAOPDemo.main.DisplayOperation.*(..))")
public void logCalls() {}
@Around("logCalls()")
public void aroundLogCalls(ProceedingJoinPoint joinPoint)
throws Throwable {
String methodName = joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName() + "();";
System.out.println("Before method runs: " + methodName);
joinPoint.proceed();
System.out.println("After method runs: " + methodName);
}
}
main类测试方法,可以发现,main中完全没有涉及到任何关于log的代码,只是很普通很简单的调用业务逻辑方法
package com.iteye.twincle.springAOPDemo.main;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class DisplayMain {
public static void main(String[] args) {
ClassPathXmlApplicationContext factory = new ClassPathXmlApplicationContext("applicationContext.xml");
DisplayOperation displayOperation = (DisplayOperation)factory.getBean("displayOperation");
displayOperation.display();
}
}
运行结果如下:
2011-4-12 12:46:17 org.springframework.context.support.AbstractApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@133f1d7: startup date [Tue Apr 12 12:46:17 CST 2011]; root of context hierarchy
2011-4-12 12:46:17 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [applicationContext.xml]
2011-4-12 12:46:17 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
信息: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@fec107: defining beans [org.springframework.aop.config.internalAutoProxyCreator,displayOperation,logAspect]; root of factory hierarchy
Before method runs: com.iteye.twincle.springAOPDemo.main.DisplayOperation.display();
Test Class DisplayOperation method display execute...
After method runs: com.iteye.twincle.springAOPDemo.main.DisplayOperation.display();
最后源代码下载,导入eclipse应该就可以直接运行了
分享到:
相关推荐
不仅讲解了Spring3.0的基础知识,还深入讨论了SpringIoC容器、SpringAOP、使用SpringJDBC访问数据库、集成Hibernate、Spring的事务管理、SpringMVC、单元测试、敏捷开发技术等内容,帮助读者快速入门并可以立刻使用...
Spring 3.0采用了全新的模块化组织方式,将核心功能细分为不同的模块,包括Core Container、Data Access/Integration、Web、AOP and Instrumentation、Test等。这种模块化的设计让Spring变得更加灵活,开发者可以...
Struts2.0与Spring3.0的集成,可以利用Spring的IoC容器来管理Struts2的Action对象,实现更加灵活的对象创建和依赖注入。这种集成使得业务逻辑的管理和控制更加强大,同时降低了代码的耦合度。Spring还提供了AOP功能...
### Struts2.0、Spring2.0与Hibernate3.0整合开发快速入门知识点解析 #### 一、Struts2.0与Hibernate3.0整合基础 **知识点1:Struts2.0简介** - **定义**: Struts2是Apache基金会下的一个开源项目,它是一个基于...
- **Spring入门教程**: 这是Spring框架的基础教程,涵盖了Spring的核心概念,如IoC容器、Bean的声明和装配,以及基本的AOP使用。 - **使用 Spring 2.5 基于注解驱动的 Spring MVC**: 这部分将阐述Spring 2.5中的...
《开涛学习Spring3》是一本专为初学者设计的Spring3.0快速入门指南,旨在帮助读者迅速掌握这一强大的Java应用框架。Spring是企业级Java开发中的核心框架,其3.0版本更是集成了许多新特性,提升了性能和易用性。本...
标题与描述均提到了“Struts2.0+Spring2.0+Hibernate3.0整合开发快速入门”,这表明文章旨在介绍如何将这三个框架整合在一起进行企业级Java应用的开发。接下来,我们将深入分析和解释这部分内容所涉及的关键知识点。...
这个“spring入门程序”旨在帮助初学者快速理解并掌握Spring框架的基本概念和使用方法。以下将详细阐述Spring框架的一些关键知识点。 1. **IoC(Inversion of Control,控制反转)**:Spring的核心特性之一是IoC,...
为了降低学习曲线,Spring 3.0引入了新的入门教程,覆盖了框架的基础知识和常见用法,适合初学者快速掌握Spring的核心概念。 #### 4. 模块组织和构建系统的改进 在模块组织和构建系统方面,Spring 3.0进行了优化,...
这种组合允许开发者充分利用两者的优点,如Spring的IoC和AOP与Struts2的MVC模式。 综上所述,这些参考资料为学习和深入理解Spring和Struts2框架提供了丰富的资源,无论是对于初学者还是经验丰富的开发者,都能从中...
- **AOP和Instrumentation**:提供了面向切面编程的能力,可以用来实现事务管理、日志记录等功能。 - **测试**:为Spring应用程序提供单元测试和集成测试的支持。 ##### 1.3 使用场景 Spring框架适用于多种应用...
SpEL(Spring Expression Language)是Spring3.0之后新增的模块,提供了一种强大的表达式语言,用于在运行时查询和操作对象图。 **依赖注入**是Spring的重要特性,它使得组件之间的依赖关系得以解耦,提高了代码的...
总之,《Spring in Action》第三版是一本全面介绍了Spring3.0框架的书籍,不仅适合Spring初学者作为入门指南,也适合有经验的开发者作为参考手册。通过本书的学习,读者可以掌握如何使用Spring来编写更简洁、易于...
随着EJB 3.0的发布,其编程模型在很大程度上受到了Spring IoC特性和Hibernate的启发,但EJB仍然在某些特定应用场景中保持着其独特的功能,如分布式事务管理和RMI远程调用。 总的来说,Spring框架通过其全面的目标和...
- **Java 5的支持**:Spring 3.0全面支持Java 5,利用其特性如泛型和枚举等来提高类型安全性和代码可读性。 - **文档改进**:官方文档进行了大幅度更新,提供了更清晰的指南和示例。 - **新的入门教程**:为初学者...
Spring以其控制反转(IoC)和面向切面编程(AOP)为核心,提供了一个全面的容器框架,能够有效地管理和协调应用程序中的各种组件。 **1.1 Spring概述** 1.1.1 什么是Spring Spring是一个开源的轻量级框架,其核心...