`
woaiyingyu123
  • 浏览: 71133 次
  • 性别: Icon_minigender_1
  • 来自: 广西
社区版块
存档分类
最新评论

Spring AOP配置补充

阅读更多
感觉之前写的那Spring配置中的AOP太繁琐了。现在小小的整理一下。
(1)在xml中的配置
	<aop:config proxy-target-class="true">
		<aop:aspect id="logsAspect" ref="recordLog">
			<aop:pointcut expression="execution(* com.lrl.action.Login.userLogin(String)) and args(name)"
				id="recordPoint" />//带参数了!
			<aop:around method="recordLogs" pointcut-ref="recordPoint" />
		</aop:aspect>
	</aop:config>

(2)还可以在类中配置
//直接在方法上
	@Around("execution(* com.lrl.action.Register.userRegister(String)) && args(name)")
	public void recordLogs1(ProceedingJoinPoint jp, String name)
			throws Throwable {
		System.out.println("1234");
		jp.proceed();
		System.out.println(name);
		
	}

//或者可以选择在外面定义切点
	@Pointcut("execution(* com.lrl.action.Register.userRegister(String))")
	public void reg(){};//切点名,任意的
	@Around("reg() && args(name)")//里面包含了切点名和参数列表
	public void recordLogs(ProceedingJoinPoint jp, String name)
			throws Throwable {
               System.out.println(name);
		jp.proceed();	
	}

当然,一个通知可以有多个切点
@Pointcut("execution(* com.lrl.action.Register.userRegister(String))")
	public void reg(){};//切点1
@Pointcut("execution(* com.lrl.action.Register.userLogin(String))")
	public void login(){};//切点2
@Pointcut(" reg() || login()")//可以这样合并
        public void  combine(){};//合并切点

@Around("reg() || login()")//可以这样用!
//@Around("combine()")也可以这样用,效果是一样的!
public void recordLogs(ProceedingJoinPoint jp, String name)
		throws Throwable {
      System.out.println(name);
     jp.proceed();	
	}


//这里还说明几点:
(1)ProceedingJoinPoint是针对于环绕通知的。
(2)JoinPoint是前置、后置等通知的
(3)xml中参数列表用and args(xxx),类中可以用 && args(xxx)或and args(xxx).
(4)返回值等的应用可以参考Spring配置那篇文章。(虽然阅读困难,但是将就一下把。呵呵)
(5)有说的不对的地方,请留言。没做过很大量的实验测试。见谅~以后会补充完善的
(6)注意:最好不要某个类的所有方法都进行AOP切入,否则有时候切入的是getter等方法的时候,其他页面需要数据,会导致为空!具体原因可能是内部机制,现在还不是很了解。以后了解补充!
分享到:
评论

相关推荐

    Spring AOP 16道面试题及答案.docx

    Spring AOP,全称为Aspect Oriented Programming,是面向切面编程的一种编程范式,它是对传统的面向对象编程(OOP)的一种补充。在OOP中,核心是对象,而在AOP中,核心则是切面。切面是关注点的模块化,即程序中的...

    spring AOP myeclipse 完整代码

    1. **创建Bean**:在Spring的配置文件(如`applicationContext.xml`)中定义你需要使用AOP的Bean。例如,你可能有一个名为`UserService`的服务类,它包含了业务逻辑,需要被AOP代理。 ```xml ``` 2. **定义切面**...

    spring aop 切面添加日志

    首先,我们需要一个配置类,它将启用Spring的AOP代理并声明我们的切面。在Java配置类中,我们可以使用`@EnableAspectJAutoProxy`注解来启用AOP支持。 ```java @Configuration @EnableAspectJAutoProxy public class...

    SpringAOP是什么?为什么要有SpringAOP?

    4. **简化事务管理**:Spring AOP提供了一种声明式事务管理方式,通过简单的配置就可以实现复杂的事务规则,极大地减少了手动管理事务的工作量。 5. **增强可扩展性**:切面允许添加新的功能而不修改现有代码,这...

    Spring-Aop所有jar

    在Spring AOP中,我们可以使用注解或者XML配置来定义切面。例如,@Aspect注解用于声明一个类为切面,@Before、@After、@AfterReturning、@AfterThrowing和@Around用于定义不同的通知类型。切入点表达式使用一种类似...

    spring aop小实例

    3. **Spring AOP配置** - XML配置:在Spring的配置文件中定义切面、切入点表达式和通知。 - 注解配置:使用`@Aspect`、`@Pointcut`、`@Before`、`@After`等注解声明切面和通知。 4. **小实例详解** - 创建一个切...

    详解Spring AOP 拦截器的基本实现

    Spring AOP是Spring框架中处理AOP的一种实现,它允许你通过在Spring的配置文件中使用&lt;aop:config&gt;元素来配置切面、通知以及切点。Spring AOP使用代理模式和动态代理技术来拦截方法调用,根据切点表达式匹配的方法会...

    Spring aop 深入剖析.docx

    Spring AOP(面向切面编程)是Spring框架的核心特性,它作为面向对象编程(OOP)的一种补充,旨在解决业务处理过程中的横切关注点,例如日志记录、权限检查等。OOP关注的是对象的属性和行为,而AOP关注的是跨越多个...

    hualinux spring 3.15:Spring AOP.pdf

    在Spring框架中,从2.0版本开始支持两种方式来使用AOP:基于AspectJ注解的AOP以及基于XML配置的AOP。 4. 在Spring中启用AspectJ注解支持 要在Spring应用中使用AspectJ注解,需要在classpath下包含三个JAR文件:aop...

    spring aop简单示例.rar

    6. **配置AOP**:在Spring中,AOP可以通过XML配置或注解方式进行设置。XML配置中,我们需要定义&lt;aop:config&gt;,&lt;aop:pointcut&gt;,&lt;aop:advisor&gt;等元素。而注解方式则使用@EnableAspectJAutoProxy开启自动代理,然后在...

    SpringAOP实现.docx

    - **XML配置**:在Spring的配置文件中,使用`aop:config`标签开启AOP支持,然后通过`aop:pointcut`定义切入点,`execution()`表达式指定需要拦截的方法。例如,下面的配置会拦截`com.spong.demo03.UserServiceImpl`...

    深入浅析Spring AOP的实现原理1

    Spring AOP,全称Aspect-Oriented Programming(面向切面编程),是对传统Object-Oriented Programming(面向对象编程,OOP)的一种补充。在OOP中,为了实现共享行为,如日志、权限验证和事务管理,往往需要在多个类...

    Spring-AOP编程.docx

    Spring AOP 编程 Spring AOP(Aspect-Oriented Programming,面向切面编程)是一种编程技术,它可以将横切关注点从核心业务逻辑中分离出来,提高系统的可维护性、可扩展性和灵活性。AOP 是 OOP 的补充和完善,可以...

    spring2-aop入门实例教程

    - **配置方法**:Spring AOP可以通过XML配置文件、Java配置类以及注解等多种方式进行配置。 - **切入点(Pointcut)**:定义了通知将应用于哪些连接点的规则。 - **增强(Advice)**:在特定连接点执行的代码块,可以是...

    8Spring AOP盗梦空间之三 ——AfterThrowing

    总的来说,`AfterThrowing`通知在Spring AOP中起到了异常处理的补充角色,它让我们能够对方法抛出的异常进行定制化的处理。通过合理利用`AfterThrowing`,我们可以使代码更加整洁,同时增强系统的异常处理能力。在...

    spring aop

    1. **配置文件**:在Spring的XML配置文件中声明切面,定义切点和通知。例如,使用`&lt;aop:config&gt;`标签来定义切面,`&lt;aop:pointcut&gt;`定义切点,`&lt;aop:advisor&gt;`或`&lt;aop:aspect&gt;`定义通知。 2. **切面类(Aspect)**:...

    aop与spring事务处理

    - 基于Spring AOP的事务管理使得事务的配置和管理更加灵活。 2. **Spring事务管理示例** - 下面是一个简单的Spring配置示例,展示了如何配置Hibernate SessionFactory以及事务管理器: ```xml &lt;!-- Hibernate ...

Global site tag (gtag.js) - Google Analytics