`
xxp3369
  • 浏览: 151305 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

AOP1

阅读更多
spring对AOP的只是(采用Annotation的方式)

1、spring依赖库
* SPRING_HOME/dist/spring.jar
* SPRING_HOME/lib/jakarta-commons/commons-logging.jar
* SPRING_HOME/lib/log4j/log4j-1.2.14.jar
* SPRING_HOME/lib/aspectj/*.jar

2、采用Aspect定义切面

2、在Aspect定义Pointcut和Advice

4、启用AspectJ对Annotation的支持并且将Aspect类和目标对象配置到Ioc容器中

注意:在这种方法定义中,切入点的方法是不被执行的,它存在的目的仅仅是为了重用切入点
即Advice中通过方法名引用这个切人点

AOP:
* Cross cutting concern
* Aspect
* Advice
* Pointcut
* Joinpoint
* Weave
* Target Object
* Proxy
* Introduction


applicationContext.xml


引用
<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:aop="http://www.springframework.org/schema/aop"
     xmlns:tx="http://www.springframework.org/schema/tx"
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<aop:aspectj-autoproxy/>
<bean id="securityHandler" class="com.bjsxt.spring.SecurityHandler"/>          
<bean id="userManager" class="com.bjsxt.spring.UserManagerImpl"/>
</beans>



UserManager.java

package com.bjsxt.spring;

public interface UserManager {

	public void addUser(String username, String password);
	
	public void deleteUser(int id);
	
	public void modifyUser(int id, String username, String password);
	
	public String findUserById(int id);
}



UserManagerImpl.java

package com.bjsxt.spring;

public class UserManagerImpl implements UserManager {

	public void addUser(String username, String password) {
		System.out.println("-------UserManagerImpl.addUser()----------");
	}

	public void deleteUser(int id) {
		System.out.println("-------UserManagerImpl.deleteUser()----------");
	}

	public String findUserById(int id) {
		System.out.println("-------UserManagerImpl.findUserById()----------");
		return null;
	}

	public void modifyUser(int id, String username, String password) {
		System.out.println("-------UserManagerImpl.modifyUser()----------");
	}
	
//	private void checkSecurity() {
//		System.out.println("----------checkSecurity()---------------");
//	}
}


SecurityHandler.java


package com.bjsxt.spring;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;

/**
 * 定义Aspect
 * @author Administrator
 *
 */
@Aspect
public class SecurityHandler {
	
	/**
	 * 定义Pointcut,Pointcut的名称就是allAddMethod,此方法不能有返回值和参数,该方法只是一个
	 * 标识
	 * 
	 * Pointcut的内容是一个表达式,描述那些对象的那些方法(订阅Joinpoint)
	 */
	@Pointcut("execution(* add*(..)) || execution(* del*(..))")
	private void allAddMethod(){};
	
	/**
	 * 定义Advice,标识在那个切入点何处织入此方法
	 */
	@Before("allAddMethod()")
	private void checkSecurity() {
		System.out.println("----------checkSecurity()---------------");
	}
	
}



Client.java

package com.bjsxt.spring;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Client {

	public static void main(String[] args) {
		BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
		
		UserManager userManager = (UserManager)factory.getBean("userManager");
		
		userManager.addUser("张三", "123");
		userManager.deleteUser(1);
	}
}
分享到:
评论

相关推荐

    spring_aop1.rar_spring aop

    本资源"spring_aop1.rar"包含了一个经典的Spring AOP学习案例,是初学者了解和掌握这一特性的好起点。 在Spring AOP中,主要涉及以下几个核心概念: 1. **切面(Aspect)**:切面是关注点的模块化,它封装了横切...

    spring_aop1.rar_java aop_spring mvc 例子

    本实例“spring_aop1.rar”是一个关于Spring AOP入门的教程,旨在帮助开发者更好地理解和运用Spring的AOP特性,同时也涉及到Spring MVC的相关知识。下面我们将深入探讨这两个关键概念。 首先,让我们了解一下Spring...

    spring_aop1.rar_spring

    本资源“spring_aop1.rar”聚焦于Spring框架的一个核心特性——面向切面编程(Aspect Oriented Programming,AOP)。AOP是Spring框架提供的一种强大的功能,它允许程序员在不修改原有代码的情况下,通过插入额外的...

    09spring4_aop1.rar

    这个压缩包文件"09spring4_aop1.rar"包含了相关的源代码示例,让我们一步步地解析这个主题。 **一、Spring AOP简介** Spring AOP是Spring框架的核心部分,它允许开发者在不修改源代码的情况下,对应用程序进行横切...

    02-01-09-用30个类高仿真提炼纯手写Spring框架V2.0之AOP1

    在本课程“02-01-09-用30个类高仿真提炼纯手写Spring框架V2.0之AOP1”中,主要目标是深入理解Spring框架的AOP(面向切面编程)模块,并通过实际编写代码来模拟Spring的核心功能。通过这个过程,学员将学习和应用多种...

    SpringAOP1.zip

    《Spring AOP实战详解》 在Java开发领域,Spring框架以其强大的功能和灵活性深受开发者喜爱。其中,Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的重要组成部分,它提供了一种处理横切...

    使用Spring配置文件实现AOP

    1. 配置Advisor:Advisor是通知和切点的组合。在Spring的XML配置文件中,我们可以创建一个`&lt;aop:config&gt;`元素,并在其内部定义`&lt;aop:advisor&gt;`来创建Advisor。Advisor的`advice-ref`属性用于指定通知bean的ID,`...

    spring aop的demo

    在`springAop1`这个压缩包中,可能包含了一个简单的应用示例,展示了如何定义一个切面类,以及如何在该类中定义通知方法。例如,我们可能会看到一个名为`LoggingAspect`的类,其中包含了`@Before`注解的方法,用于在...

    spring-aop

    《Spring AOP:注解方式实现面向切面编程》 在Java开发中,Spring框架以其强大的功能和灵活性深受开发者喜爱,而Spring AOP(Aspect Oriented Programming,面向切面编程)是其核心特性之一,它使得我们可以将关注...

    深入字节码 -- 使用 ASM 实现 AOP1

    1. **分析字节码**:首先,我们需要解析目标类的字节码,了解其方法结构,找到要插入切面代码的位置。 2. **创建 ClassWriter 对象**:ASM 提供了 ClassWriter 类,用于创建或修改类的字节码。 3. **创建 ...

    Spring Mvc AOP通过注解方式拦截controller等实现日志管理

    在Spring MVC框架中,AOP(面向切面编程)是一种强大的工具,用于实现跨切面的关注点,如日志管理。本教程将详细介绍如何利用注解来配置和使用AOP来拦截Controller层的方法,以便记录执行过程中的相关信息,实现日志...

    spring使用动态代理面向切面编程(AOP) xml

    1. 定义切面:在Spring的XML配置文件中,使用`&lt;aop:aspect&gt;`标签定义一个切面,设置`id`属性为切面的唯一标识,`ref`属性引用切面类的bean。 ```xml &lt;aop:config&gt; &lt;aop:aspect id="loggingAspect" ref=...

    spring aop spring aop

    1. **切面(Aspect)**:切面是关注点的模块化,包含pointcut(切点)和advice(通知)两部分。例如,在上述代码中的`PersonProxy`类就是一个切面,它定义了`before()`和`after()`方法作为通知。 2. **切点...

    T2 spring-aop

    1. 引入依赖:在Maven或者Gradle项目中,添加Spring AOP和Spring Core的相关依赖。 2. 配置Spring容器:创建或更新Spring的配置文件(如applicationContext.xml),启用AOP代理并声明需要代理的bean。 三、定义切面...

    spring4Aop.zip

    1. **定义切面**:在Spring中,我们可以使用`@Aspect`注解来定义一个切面类。这个类通常包含一系列的通知(Advice),如前置通知、后置通知、异常通知等。 2. **声明切入点**:使用`@Pointcut`注解来声明切入点...

    aopalliance-1

    标题 "aopalliance-1" 指的是 AOP Alliance 的版本 1,这是一个重要的开源项目,旨在提供一个统一的接口,使得不同的面向切面编程(AOP)框架能够协同工作。AOP Alliance 为Java平台上的AOP实现提供了一个公共API,...

    aopalliance-1.0.jar及aopalliance源码

    1. **事务管理**: AOP Alliance常用于实现事务管理,例如在方法执行前后自动开启和提交/回滚事务。 2. **日志记录**: 通过拦截方法调用来添加日志记录功能,无需在每个业务方法中添加日志代码。 3. **性能监控**: ...

    spring-aop.jar各个版本

    spring-aop-1.1.1.jar spring-aop-1.2.6.jar spring-aop-1.2.9.jar spring-aop-2.0.2.jar spring-aop-2.0.6.jar spring-aop-2.0.7.jar spring-aop-2.0.8.jar spring-aop-2.0.jar spring-aop-2.5.1.jar spring-aop-...

    aop所依赖的所有包

    1. `aspectjweaver.jar`:AspectJ Weaver的实现,用于在运行时实现切面的织入。 2. `aopalliance.jar`:AOP Alliance的接口定义,提供了跨AOP框架的互操作性。 在使用这些库时,开发者可以: - 使用AspectJ的注解...

Global site tag (gtag.js) - Google Analytics