- 浏览: 522296 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
Zhouchenyu:
谢谢
1、junit学习之junit的基本介绍 -
wenjieyatou:
1、junit学习之junit的基本介绍 -
huabengao:
不错 很好
1、junit学习之junit的基本介绍 -
prayjourney:
写的不错,很有启发!
1、junit学习之junit的基本介绍 -
wangzhenyu1260:
assertEqualspublic static void ...
1、junit学习之junit的基本介绍
1、新建一个java的工程,导入spring需要的jar包与开发切面需要的jar包。
dist\spring.jar
lib\jakarta-commons\commons-logging.jar
如果使用了切面编程(AOP),还需要下列jar文件
lib/aspectj/aspectjweaver.jar和aspectjrt.jar
lib/cglib/cglib-nodep-2.1_3.jar
如果使用了JSR-250中的注解,如@Resource/@PostConstruct/@PreDestroy,还需要下列jar文件
lib\j2ee\common-annotations.jar
2、Person.java
2、PersonService.java 与PersonServiceBean.java
PersonService.java
PersonServiceBean.java
3、MyInterceptor.java
4 在src下对beans.xml进行配置
4、测试类
dist\spring.jar
lib\jakarta-commons\commons-logging.jar
如果使用了切面编程(AOP),还需要下列jar文件
lib/aspectj/aspectjweaver.jar和aspectjrt.jar
lib/cglib/cglib-nodep-2.1_3.jar
如果使用了JSR-250中的注解,如@Resource/@PostConstruct/@PreDestroy,还需要下列jar文件
lib\j2ee\common-annotations.jar
2、Person.java
package cn.ehoo.bean; /** * @author whp * @Email whp@ehoo.cn * @Jan 4, 2011 * */ public class Person { private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
2、PersonService.java 与PersonServiceBean.java
PersonService.java
package cn.ehoo.service; import cn.ehoo.bean.Person; /** *@author whp *@Email whp@ehoo.cn *@Jan 4, 2011 * */ public interface PersonService { public void save(Person person); }
PersonServiceBean.java
package cn.ehoo.service.impl; import org.springframework.stereotype.Service; import cn.ehoo.bean.Person; import cn.ehoo.service.PersonService; /** * @author whp * @Email whp@ehoo.cn * @Jan 4, 2011 * */ @Service("personService") public class PersonServiceBean implements PersonService { private String user; public String getUser() { return user; } public void setUser(String user) { this.user = user; } public PersonServiceBean() { } public PersonServiceBean(String user) { super(); this.user = user; } public void save(Person person) { System.out.println("执行PerServiceBean的save方法"); //throw new RuntimeException("======"); } }
3、MyInterceptor.java
package cn.ehoo.service.impl; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.AfterThrowing; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.springframework.stereotype.Controller; import cn.ehoo.bean.Person; /** * @author whp * @Email whp@ehoo.cn * @Jan 4, 2011 * */ @Aspect//声明切面 @Controller//把类交给spring管理 public class MyInterceptor { @Pointcut("execution(* cn.ehoo.service.impl.PersonServiceBean.*(..))")// 切入点表达式 private void anyMethod() { }// 声明一个切入点 @Before("anyMethod()&& args(userName)")//定义前置通知 执行业务方法前执行 args(userName) 表示要执行的方式必须为一个参数并为Person类型.这样就给他再加了限制条件 public void doAccessCheck(Person userName) { System.out.println(userName);//得到输入的参数 System.out.println("执行前置通知"); } @AfterReturning(pointcut="anyMethod()")//定义后置通知 执行完业务方法后执行 如果例外通知执行,那么它不会执行 public void doReturnCheck() { System.out.println("执行后置通知"); } @After("anyMethod()")//定义最终通知 finally里执行的通知。 public void doReleaseAction() { System.out.println("执行最终通知"); } @AfterThrowing(pointcut="anyMethod()", throwing="ex")//定义例外通知 public void doExceptionAction(Exception ex) { System.out.println("执行例外通知"); } @Around("anyMethod()")//环绕通知 doBasicProfiling pjp可以修改 用于权限 public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable { System.out.println("执行环绕通知"); Object retule =pjp.proceed(); System.out.println("退出环绕通知"); return retule; } }
4 在src下对beans.xml进行配置
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> <context:component-scan base-package="cn.ehoo" /> <aop:aspectj-autoproxy /> </beans>
4、测试类
package junit.test; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import cn.ehoo.bean.Person; import cn.ehoo.service.PersonService; /** * @author whp * @Email whp@ehoo.cn * @Jan 4, 2011 * */ public class AOPTest { static PersonService personService; @BeforeClass public static void setUpBeforeClass() throws Exception { AbstractApplicationContext cxt = new ClassPathXmlApplicationContext("beans.xml"); personService = (PersonService) cxt.getBean("personService"); } /** * @author whp * @Email whp@ehoo.cn * @Jan 4, 2011 * */ public static void main(String[] args) { try { setUpBeforeClass(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Test public void saveTest() { personService.save(new Person()); } @AfterClass public static void tearDownAfterClass() throws Exception { } }
- springAop.rar (8 KB)
- 下载次数: 179
发表评论
-
Spring MVC控制器之SimpleFormController使用
2013-10-31 15:49 3435SimpleFormController已经 ... -
Spring MVC控制器之ParameterizableViewController使用
2013-10-30 15:36 1705这几天在看walker讲的Spring MVC视频教程,在网 ... -
spring 注解Autowired、service、Autowired 的使用
2013-05-30 16:43 6303在spring中可以通过service来把一个业务层的类交 ... -
spring配置文件名字问题
2011-04-27 09:48 15746在做java开发时,如果用到spring,那么在做j2ee开发 ... -
Spring MVC demo
2011-04-26 09:14 160681、新建一web项目 springmvc,并在lib目录中加入 ... -
Struts1.2+Spring2.5+Hibernate3.2 开发时不能用Spring的AOP对继承DispatchAcion的Action里的方法进行拦截
2011-02-12 17:08 1869使用SSH组合开发时,在把所有的Action都交给S ... -
struts1.3+spring2.5+hibernate3.3 组合开发 annotation实现
2011-01-06 14:55 1600在本例中用struts1.3+spring2.5+hibern ... -
spring+JdbcTemple+dbcp数据源 的xml实现
2011-01-06 11:21 1734在本例中使用spring为我们提供的jdbc的模版来对spri ... -
Spring中注解事务方面的问题
2011-01-06 10:26 3760我们可以在spring的配置 ... -
spring+JdbcTemple+dbcp数据源 的注解实现
2011-01-05 14:01 2184在本例中使用spring为我们提供的jdbc的模版来对spri ... -
SpringXML方式实现AOP demo
2011-01-04 16:09 13331、新建一个java的工程,导入spring需要的jar包与开 ... -
CGLIB实现代理demo
2011-01-04 11:43 2505在上片文章里说了如何用jdk自带的类Proxy来实现代理,但是 ... -
Proxy实现代理demo
2011-01-04 10:57 1277save、update、insert方法,只有在用户登录后才能 ... -
Spring是轻量级框架还是重量级框架
2010-12-31 09:56 5301主要看使用了多少服务.使用的服务越多.对于spring容器来说 ... -
使用spring的好处
2010-12-31 09:15 1040a. 降低组件之间的耦合度,实现软件各层之间的解耦。如我们的P ... -
Spring Bean 的作用域
2010-12-30 17:52 979在spring中bean一共有5个作用域。 1、single ... -
Spring 注解 方式配制的小demo
2010-12-30 17:24 14211、新建一个Web程序 在程序中引入Spring所需要的 ... -
Spring xml 方式配制的小demo
2010-12-30 17:19 10751、新建一个Web程序 在程序中引入Spring所需要的 ...
相关推荐
在Spring中,AOP主要分为两种实现方式:基于XML配置和基于注解。本示例主要探讨注解方式。 1. **定义切面(Aspect)** 切面是关注点的模块化,它包含通知(Advice)和切入点(Pointcut)。在Spring中,我们可以...
标题 "SpringXML方式实现AOP demo" 涉及到的是使用Spring框架通过XML配置来实现面向切面编程(AOP)的知识。面向切面编程是Spring框架的一个核心特性,它允许开发者在不修改原有业务代码的情况下,对系统进行横切...
Spring注解AOP(Aspect-Oriented Programming,面向切面编程)是Spring框架中的一个重要特性,它使得开发者可以在不修改原有代码的情况下,通过添加注解来实现横切关注点,如日志、事务管理等。下面我们将深入探讨...
压缩包中的"aop"文件可能包含了一个简单的Spring AOP示例项目,包括了上述两种实现方式的源代码和配置文件。下载后,可以直接运行以观察AOP如何工作。 总结来说,Spring AOP提供了一种强大的方式来实现横切关注点,...
尽管我们无法直接访问这个链接,但我们可以基于常见的Spring注解配置实践来解释相关概念。 1. `@Component`:这是Spring中的基础注解,用于标记一个类为Spring管理的bean。它的子注解包括`@Service`、`@Repository`...
### 二、AOP实现方式 1. **基于代理的AOP**:Spring提供了两种代理方式,JDK动态代理和CGLIB代理。JDK动态代理主要针对接口实现,而CGLIB代理则针对类实现。 2. **基于注解的AOP**:Spring 2.5开始支持注解驱动的...
在Spring中,有两种主要的AOP实现方式:注解驱动和基于XML的配置。在"test_aop_xml"文件中,我们可能会看到XML配置文件,其中定义了切面、通知(advisors)和切点(pointcuts)。 1. **注解驱动的AOP**:Spring支持...
本实例将详细介绍如何在Spring 3.2.8版本中实现AOP。 首先,我们需要理解AOP的基本概念。AOP的核心是切面(Aspect),它包含了通知(Advice)和切点(Pointcut)。通知是在特定的连接点(Join Point)执行的代码,...
总结一下,通过上述步骤,我们已经在Spring Boot应用中利用Spring AOP和注解方式实现了数据脱敏。这个拦截器可以在不修改原有业务代码的情况下,确保敏感信息在响应给客户端之前得到处理,提高了应用的安全性。同时...
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种在不修改源代码的情况下,对程序进行功能增强或横切关注点(如日志、事务管理、性能监控等)注入的方式。在本Demo中,我们将深入探讨Spring AOP...
**Spring AOP实现方式** 1. **注解驱动(Annotation-based)**:使用`@Aspect`注解定义切面,`@Before`, `@After`, `@AfterReturning`, `@AfterThrowing`, `@Around`定义通知,`@Pointcut`定义切入点表达式。 2. *...
总之,这个“全注解方式实现的demo”展示了如何整合Struts2、Spring3和Hibernate,利用注解简化配置,提高开发效率。对于初学者,这是一个很好的学习资源,可以深入理解这三大框架的协同工作以及注解在实际项目中的...
本小DEMO将演示如何在Spring MVC环境中集成并使用基于注解的AOP。 首先,我们来理解AOP的核心概念。AOP的目标是将那些影响多个类的代码(如日志、事务管理、性能监控等)抽取出来,形成独立的模块,称为切面。切点...
本文将深入探讨如何使用Spring Boot的AOP注解方式来实现多数据源的集成。 首先,我们要了解Spring Boot的基础概念。Spring Boot简化了Spring应用程序的创建,它提供了自动配置、起步依赖等特性,使得开发者可以快速...
本项目"Spring MVC AOP通过注解方式拦截Controller等实现日志管理demo版本2"是基于注解的AOP实践,旨在帮助开发者了解如何利用AOP来记录应用程序中的关键操作日志。以下是关于这个主题的详细解释: 1. **Spring AOP...
这个"spring2.5AOPdemo详细资料"很可能是针对Spring 2.5版本的一个AOP实战示例,帮助开发者了解并掌握AOP的概念、原理以及在实际开发中的应用。 AOP的核心概念包括切面(Aspect)、通知(Advice)、连接点(Join ...
这个简单的AOP demo展示了如何通过Spring AOP实现关注点的解耦,使得日志记录等横切关注点可以在不侵入业务代码的情况下进行。实际应用中,你可以根据需要添加更多的通知类型和切面,以处理更多类型的关注点。
Spring AOP,全称Aspect Oriented Programming(面向切面编程),是Spring框架的重要组成部分,它为应用程序提供了一种模块化和声明式的方式来处理交叉关注点,如日志、事务管理、性能监控等。通过AOP,我们可以将...
例如,使用`@Component`、`@Autowired`等Spring注解,可以将服务提供者和消费者对象注入到其他业务逻辑组件中。此外,Spring的AOP(面向切面编程)能力也能帮助我们更好地实现服务的监控和日志记录。 在这个demo中...