`
twincle
  • 浏览: 41834 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Spring 3.0 实现IoC和AOP的入门程序

阅读更多

终于开始写博客啦,坚持原创!

话说这个程序折腾了我一个上午,我比较完美主义,所以要求程序达到最简洁,lib中的jar包数量最少,所以开始的时候有各别包没有导入,导致很奇怪的错误,结果浪费时间。后来一生气把所有的包都放进去,结果没有错误了,然后又一个包一个包的删除看看能不能运行,最终得到了最少的包列表,哈哈哈。

首先,最简洁包列表,共11个包,spring自带包6个和外部下载包5个:


Spring 3.0 实现IoC和AOP的入门程序 最小包列表

 

其中使用的是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

 

然后,文件结构:

 

Spring 3.0 实现IoC和AOP的入门程序 文件结构

 

其中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应该就可以直接运行了

1
1
分享到:
评论

相关推荐

    Spring 3.0就这么简单源代码

    不仅讲解了Spring3.0的基础知识,还深入讨论了SpringIoC容器、SpringAOP、使用SpringJDBC访问数据库、集成Hibernate、Spring的事务管理、SpringMVC、单元测试、敏捷开发技术等内容,帮助读者快速入门并可以立刻使用...

    spring3.0帮助文档

    Spring 3.0采用了全新的模块化组织方式,将核心功能细分为不同的模块,包括Core Container、Data Access/Integration、Web、AOP and Instrumentation、Test等。这种模块化的设计让Spring变得更加灵活,开发者可以...

    struts2.0+Spring3.0实例

    Struts2.0与Spring3.0的集成,可以利用Spring的IoC容器来管理Struts2的Action对象,实现更加灵活的对象创建和依赖注入。这种集成使得业务逻辑的管理和控制更加强大,同时降低了代码的耦合度。Spring还提供了AOP功能...

    struts2.0 spring2.0 hibernate3.0整合开发快速入门-3

    ### Struts2.0、Spring2.0与Hibernate3.0整合开发快速入门知识点解析 #### 一、Struts2.0与Hibernate3.0整合基础 **知识点1:Struts2.0简介** - **定义**: Struts2是Apache基金会下的一个开源项目,它是一个基于...

    Spring2.5、3.0、3.1轻松入门+中级+高级教程14合一

    - **Spring入门教程**: 这是Spring框架的基础教程,涵盖了Spring的核心概念,如IoC容器、Bean的声明和装配,以及基本的AOP使用。 - **使用 Spring 2.5 基于注解驱动的 Spring MVC**: 这部分将阐述Spring 2.5中的...

    开涛学习spring3

    《开涛学习Spring3》是一本专为初学者设计的Spring3.0快速入门指南,旨在帮助读者迅速掌握这一强大的Java应用框架。Spring是企业级Java开发中的核心框架,其3.0版本更是集成了许多新特性,提升了性能和易用性。本...

    struts2.0+spring2.0+hibernate3.0整合开发快速入门-4

    标题与描述均提到了“Struts2.0+Spring2.0+Hibernate3.0整合开发快速入门”,这表明文章旨在介绍如何将这三个框架整合在一起进行企业级Java应用的开发。接下来,我们将深入分析和解释这部分内容所涉及的关键知识点。...

    spring入门程序

    这个“spring入门程序”旨在帮助初学者快速理解并掌握Spring框架的基本概念和使用方法。以下将详细阐述Spring框架的一些关键知识点。 1. **IoC(Inversion of Control,控制反转)**:Spring的核心特性之一是IoC,...

    Spring入门.pdf

    Spring框架的使命是简化Java企业级应用的复杂度,通过实现IoC(Inversion of Control,控制反转)模式和采用分层架构,使得开发者能够选择性地使用其组件,从而极大地提高了应用程序的灵活性和可维护性。 ### ...

    spring framework reference 3.0.0 RC1

    为了降低学习曲线,Spring 3.0引入了新的入门教程,覆盖了框架的基础知识和常见用法,适合初学者快速掌握Spring的核心概念。 #### 4. 模块组织和构建系统的改进 在模块组织和构建系统方面,Spring 3.0进行了优化,...

    Spring+structs2 中英文参考手册

    这种组合允许开发者充分利用两者的优点,如Spring的IoC和AOP与Struts2的MVC模式。 综上所述,这些参考资料为学习和深入理解Spring和Struts2框架提供了丰富的资源,无论是对于初学者还是经验丰富的开发者,都能从中...

    Spring参考文档,内容全面。

    - **AOP和Instrumentation**:提供了面向切面编程的能力,可以用来实现事务管理、日志记录等功能。 - **测试**:为Spring应用程序提供单元测试和集成测试的支持。 ##### 1.3 使用场景 Spring框架适用于多种应用...

    第1章 初识Spring的基本应用.ppt

    SpEL(Spring Expression Language)是Spring3.0之后新增的模块,提供了一种强大的表达式语言,用于在运行时查询和操作对象图。 **依赖注入**是Spring的重要特性,它使得组件之间的依赖关系得以解耦,提高了代码的...

    spring in action 3 英文版

    总之,《Spring in Action》第三版是一本全面介绍了Spring3.0框架的书籍,不仅适合Spring初学者作为入门指南,也适合有经验的开发者作为参考手册。通过本书的学习,读者可以掌握如何使用Spring来编写更简洁、易于...

    spring入门好教程

    随着EJB 3.0的发布,其编程模型在很大程度上受到了Spring IoC特性和Hibernate的启发,但EJB仍然在某些特定应用场景中保持着其独特的功能,如分布式事务管理和RMI远程调用。 总的来说,Spring框架通过其全面的目标和...

    Spring3英文开发文档

    - **Java 5的支持**:Spring 3.0全面支持Java 5,利用其特性如泛型和枚举等来提高类型安全性和代码可读性。 - **文档改进**:官方文档进行了大幅度更新,提供了更清晰的指南和示例。 - **新的入门教程**:为初学者...

    Spring基础学习,适合新人

    Spring以其控制反转(IoC)和面向切面编程(AOP)为核心,提供了一个全面的容器框架,能够有效地管理和协调应用程序中的各种组件。 **1.1 Spring概述** 1.1.1 什么是Spring Spring是一个开源的轻量级框架,其核心...

Global site tag (gtag.js) - Google Analytics