TestApp.java

package cn.podger.spring.demo2;import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;/*** * 在上一案例,应该对spring的ioc功能有一定的了解 这个项目的代码为展示spring的AOP功能. AOP* 全称解析为面向切面编程,它的实现原理就是通过代理去试试.* 因此spring使用策略模式,提供2种不同的实现方式,一种是基于CGLIB.一种是JDK的动态代理的方式.* 这2种的实现区别是:cglib是基于类,而JDK的动态代理通过去实现InvocationHandler接口去实现, 代理的类都需要接口.* 对于这2种实现方式,这里就不详细说明了.相应的文章颇多.*/
public class TestApp {private static ApplicationContext context = null;@BeforeClasspublic static void setUpBeforeClass() throws Exception {context = new FileSystemXmlApplicationContext("applicationContext.xml");}@Testpublic void testMethod() throws Exception {UserService us = (UserService) context.getBean(UserService.class);us.findUserById(100L);}}

AspectConfig .java

package cn.podger.spring.demo2;import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;@Aspect
@Component
public class AspectConfig {@Pointcut("execution(* cn.podger.spring.demo2.UserService.*(..))")public void aspect() {}@Before("aspect()")public void before(JoinPoint joinPoint) {System.out.println("执行前...");}@After("aspect()")public void after(JoinPoint joinPoint) {System.out.println("执行后...");}}

UserService .java

package cn.podger.spring.demo2;import org.springframework.stereotype.Service;@Service
public class UserService {public void findUserById(Long id) {System.out.println("根据ID查询用户...");}}

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:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"><context:component-scan base-package="cn.podger.spring.demo2" /><aop:aspectj-autoproxy />
</beans>

结果

项目下载http://download.csdn.net/detail/bojie5744/9546346

通过代码入门Spring②何为AOP相关推荐

  1. spring的aop的动态代理机制都有哪些_Spring学习(4):Spring AOP

    Spring AOP说明 AOP(Aspect Oriented Pragraming)面向切面编程,AOP采用横向抽取机制,取代了传统纵向继承体系的重复性代码(性能监视.事务管理.安全检查.缓存). ...

  2. Spring 从入门到入土——AOP 就这么简单!| 原力计划

    作者|  冢狐 责编 | 夕颜 出品 | CSDN博客 什么是AOP? 面向切面编程(Aspect Oriented Programming),通过预编译的方式和运行期动态代理实现程序功能的统一维护的 ...

  3. Spring框架——AOP入门笔记以及个人总结

    注:作者本人也是初学者,所以本文有些总结性见解可能存在问题,但是多数问题都是在上网查询过资料后总结的,如果有逻辑或者原理上的错误,或者见解不同,欢迎在评论区讨论!!! 目录 Spring的AOP 1. ...

  4. spring 测试demo乱码_spring框架的入门学习:AOP和面向切面的事务

    使用注解配置spring,需要以下几个步骤: 需要导入一个包: 步骤1:需要为主配置文件引入新的命名空间(约束),和之前介绍的一样,导入新的约束: 然后在application.xml的Design中 ...

  5. 4、spring核心AOP

      Spring AOP 1. Spring AOP 概述 1-1 1.1. 何为AOP? 1-1 1.2. AOP要解决什么问题? 1-1 1.3. AOP实际项目应用场景? 1-2 1.4. AO ...

  6. spring中AOP(面向切面编程)

    spring中AOP(面向切面编程) 面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发中的一个热点,也是spring框架中的一个重要内容 ...

  7. 【编程不良人】快速入门Spring学习笔记08---事务属性、Spring整合Structs2框架(SM)、Spring整合Mybatis+Struts2(SSM)、Spring注解、SSM注解式开发

    1. 事务属性 1.1 事务传播属性 配套视频:[编程不良人]快速入门Spring,SpringBoot.SpringCloud学不好完全是因为Spring没有掌握!_哔哩哔哩_bilibili # ...

  8. 快速入门Spring之SpringIOC

    学习目标 1.Spring框架简介 2.IOC概念 3.IOC容器 4.IOC的XML配置案例 5.IOC的注解配置案例 6.IOC的实现原理 1.Spring框架简介 1.1 Spring基本概念 ...

  9. 浅谈Spring框架AOP概念

    何为AOP? AOP(Aspect Oriented Programming,面向切面编程):AOP是一种新的方法论,在这之前相信我们都听过面向对象编程(OOP),AOP就是对OOP的补充,它们的关系 ...

最新文章

  1. AI时代,如何“未雨绸缪”面向未来工作?
  2. 设置JFrame背景图片
  3. Linux Epoll ET模式EPOLLOUT和EPOLLIN触发时刻
  4. Java中的方法(形参及实参)return返回类型
  5. flutter底部导航栏
  6. 如何让政府性论坛外链最大利益化
  7. mysql 5.7.10免安装_免安装版mysql5.7.10-16配置教程(2)
  8. ocr python tesseract训练_tesseract-ocr怎么大量训练
  9. 【VS2010安装教程】
  10. (JavaScript)浮动广告代码
  11. 简单好用的ImageAI编程库!选择最适合你的!
  12. 苹果手机数据能恢复吗
  13. 罗松-东文财-赵栋201771010112罗松《面向对象程序设计(java)》第十四周学习总结...
  14. 协同过滤系统基于用户的评分预测
  15. 研究生体检色弱计算机专业,考研体检,轻度色弱会不会被刷
  16. 第四届橙瓜网络文学奖网文之王我吃西红柿竟然还不敌新人作者?
  17. 21款数据恢复软件 – PC、安卓、IOS:支持你的各种情况数据恢复
  18. 巨量千川(放量投放)也可以玩出 ROI10 ?
  19. c语言编程 精密仪器,JD25-C数据处理万能测长仪
  20. Windows XP开机就需要激活,无法进入到桌面

热门文章

  1. Windows 10,鼠标右键-发送到-桌面快捷方式缺失解决方法
  2. 怎么将heic格式的图片转换成jpg格式呢?
  3. Java快速开发平台,JEECG 3.7.7闪电版本发布,增加多套主流UI代码生成器模板
  4. 视频配音软件哪个好用?这几个软件你们不容错过
  5. P4编程理论与实践——理论篇
  6. js简易计算器 黑马pink老师
  7. AMBA AHB中的retry和split的区别是什么?
  8. 回调破前高意味着什么_寻找短线暴力买点:回调不跌破前一个高点是强势股的特点,须重视...
  9. Microbiome | 基于全球人类肠道微生物组的细菌胆盐水解酶 (BSH) 基因的分类特征和种群模式
  10. java gcm_JAVA中的AES GCM加密和解密