`

spring 配置文件实现AOP-学习笔记

阅读更多

 

Spring 对AOP的支持I:

Aspect默认情况下不用实现接口,但对于目标对象,在默认的情况下必须实现接口 如果没有实现接口必须引入CGLIB库,我们可以通过Advice中添加一个JointPoint参数,这个值会由spring自动传入,从JointPoint中可以取得参数值,方法名等等。

Spring对AOP的支持II:

1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP。

2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP。

3、如果目标对象没有实现接口,必须采用CGLIB库,spring会自动在JDK动态代理和CGLIB之间转换

在实现接口的情况下, 如果强制使用CGLIB实现AOP?

添加CGLIB库,SPRING_HOME/cglib/*.jar

在spring配置文件中添加<aop:aspectj-autoproxy proxy-target-class="true"/>

JDK动态代理实和CGLIB字节码生成的区别?

JDK动态代理只能对实现了接口的类生成代理,而不能针对普通类。

CGLIB是针对类实现代理,主要是对指定的类生成一个子类,覆盖其中的方法因为是继承,所以该类或方法最好不要声明成final

 

 

 

<?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: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">
	
	<!-- 
		打开配置项,这个配置项是对@Aspectj这个注解进行支持 注解本身是不能干活的,注解之所以能干活是因为后面有处理器对其进行处理
		这个配置相当于我们将要使用的@Aspectj注解提供了解析的功能
	 -->
	<aop:aspectj-autoproxy />
	<context:component-scan base-package="com.sample.*"/>
	<bean id="apectBean" class="com.sample.service.MyInterceptor2"/>
	<aop:config>
		<aop:aspect id="asp" ref="apectBean">
			<aop:pointcut id="mycut" expression="execution (void com.sample.service.impl.PersonServiceBean*.*(String))"/>
			<aop:before pointcut-ref="mycut" method="doAccessCheck" arg-names="name" />
			<aop:after pointcut-ref="mycut" method="doAfter"/>
			<aop:after-returning pointcut-ref="mycut" method="doAfterReturning"/>
			<aop:after-throwing pointcut-ref="mycut" method="doAfterThrowing"/>
			<aop:around pointcut-ref="mycut" method="doBasicProfiling"/>
		</aop:aspect>
	</aop:config>
	
	<aop:config>
		<aop:aspect id="myAOP" ref="check">
			<aop:pointcut id="target" expression="execution(* com.sample.service.Common.execute2(..))"/>
			<aop:before method="checkValidator" pointcut-ref="target"/>
			<aop:after method="addLog" pointcut-ref="target"/>
		</aop:aspect>
	</aop:config>
</beans>

 

 package com.sample.service;
import org.springframework.stereotype.Service;
@Service("common")
public class Common {
	public void execute(String userName, String password) {
		System.out.println("------------------普通类----------------");
	}
	
	public void execute2(Stock stock) {
		System.out.println("------------------普通类----------------");
	}
}

 

package com.sample.service;
import org.aspectj.lang.JoinPoint;
import org.springframework.stereotype.Service;

@Service("check")
public class Check {
	public void checkValidator() {
		System.out.println("------------------验证合法性----------------");
	}
	public void addLog(JoinPoint jp) {
		System.out.println("------------------添加日志----------------");
		Object[] objs = jp.getArgs();
		for (Object o : objs) {
			Stock stock = (Stock)o;
			System.out.println(stock.getLId());
		}
		
		System.out.println("========checkSecurity=="+jp.getSignature().getName());//这个是获得方法名
	}
}
 

 

分享到:
评论

相关推荐

    Spring学习笔记(16)----使用Spring配置文件实现AOP

    NULL 博文链接:https://coolszy.iteye.com/blog/541997

    springboot学习思维笔记.xmind

    springboot学习笔记 spring基础 Spring概述 Spring的简史 xml配置 注解配置 java配置 Spring概述 Spring的模块 核心容器CoreContainer Spring-Core Spring-Beans ...

    Spring-Kapcb:Spring学习

    记录自己关于Spring的学习笔记还有Demo ,笔记均在Demo注释部分,后续会整理成MarkDown格式的文件发布在博客上。 如果觉得对您有帮助,您的Start就是对我最大的认同。 欢迎互相学习交流,如果项目中有问题的部分可以...

    Spring的学习笔记

    二、 建立spring的配置文件 8 三、 引入spring的jar包 8 四、 测试代码: 8 五、 注意接口的使用: 8 第五课:IOC(DI)配置及应用 9 一、 什么是IOC、DI 9 二、 编辑xml文件时,没有提示 9 三、 注入类型(Injecting ...

    Spring入门学习笔记|Spring学习.pdf

    Spring入门学习笔记,内容包括Spring介绍,Spring配置文件,Spring配置数据源,Spring的注解开发,Spring集成Junit,Spring的AOP,jdbcTemplate介绍,Spring控制事务流程,Spring集成web。

    spring学习笔记(有代码有注解解释)

    内容概要:学习Spring的一些学习笔记,主要学习Spring 框架两大核心机制(IoC、AOP) 笔记大纲:阅读笔记可以学习了解一下内容 如何使用 IoC ;配置文件;IoC 底层原理;通过运行时类获取 bean;通过有参构造创建 ...

    spring2.5 学习笔记

    二、 建立spring的配置文件 8 三、 引入spring的jar包 8 四、 测试代码: 8 五、 注意接口的使用: 8 第五课:IOC(DI)配置及应用 9 一、 什么是IOC、DI 9 二、 编辑xml文件时,没有提示 9 三、 注入类型(Injecting ...

    Spring和Hibernate学习笔记

    Hibernate: 第一课:第一个hibernate项目 第二课:测试实体对象的生命周期 第三课:hibernate基本映射 第四课:hibernate多对一关联映射 ...................... ...第五课:spring对AOP的只是(采用配置文件的方式)

    Spring入门笔记.md

    ## Spring入门学习 首先认识下Spring的结构 ![架构图](http://www.ibm.com/developerworks/cn/java/j-lo-spring-principle/image001.gif) 然后我们皆可以写我们的demo了 ### 我们的Bean类 对于bean的理解,希望...

    xmljava系统源码-SpringInAction4:《SpringInAction4th》学习笔记

    xml java系统源码 SpringInAction4 《Spring In Action ...注解方式可以实现更细粒度的自动装配,Spring容器默认禁用注解装配,要在配置文件中开启 配置自动扫描 在基于Java的配置中使用@Configura

    Java/JavaEE 学习笔记

    三、struts-config.xml配置文件中主要的元素和属性.........286 四、RequestProccessor.....................287 五、Struts1的执行流程....................289 六、struts1的高级部分....................290 七、...

    spring学习笔记

    ..............................................................................................................9 1.3.7Spring 框架加载配置文件:..............................................................

    J2EE学习笔记(J2ee初学者必备手册)

    三、struts-config.xml配置文件中主要的元素和属性.........286 四、RequestProccessor.....................287 五、Struts1的执行流程....................289 六、struts1的高级部分....................290 七、...

    Java学习笔记-个人整理的

    {7.1}Java的文件系统管理}{103}{section.7.1} {7.2}回调模式与FileFilter}{104}{section.7.2} {7.3}\ttfamily RandomAccessFile}{106}{section.7.3} {7.4}基本类型数据序列化}{108}{section.7.4} {7.5}String的...

    LSFramework:手写山寨版spring学习aop,ioc思想的demo,没看过spring的源码,因为实在是太庞大了,参考部分网上博客和开源代码完成

    手写山寨版“ spring”,学习aop,ioc思想的demo,没看过spring的源码,因为实在是太庞大了,参考部分网上博客和开源代码完成。 主要功能模块: 国际奥委会 哎呀 的jdbc rpc 其他资源 关键代码笔记,不想看所有...

    超详细的Spring框架讲解,就这一篇!足矣

    Spring框架概述1、什么是Spring2、Spring框架的优点3、Spring框架体系结构Spring框架——控制反转(IOC)1、IOC介绍2、基于配置的IOC2.1、导入jar包2.2、配置文件2.3、测试3、基于注解的IOC3.0、导包3.1、开启注解...

    asp.net知识库

    革新:.NET 2.0的自定义配置文件体系初探 关于如何在ASP.NET 2.0中定制Expression Builders 怎么在ASP.NET 2.0中使用Membership asp.net 2.0-实现数据访问(1) ASP.NET 2.0 新特性 .NET 2.0里使用强类型数据创建...

    收集的常见的专业问题解决办法.rar

    2009-02-24 08:42 165165 37065 常见的专业问题解决办法\Java核心技术学习笔记--异常和调试_Believe ┭┮ YourSelf.mht 2009-03-20 16:36 142683 39110 常见的专业问题解决办法\JR - 专题论坛问题 - eclipse??如何...

Global site tag (gtag.js) - Google Analytics