【核心核心】8.Spring【AOP】注解方式
1.引入jar包
sprig框架基础包+JUntil整合包+日志包+AOP包

spring的传统AOP的开发的包
  spring-aop-4.2.4.RELEASE.jar
  com.springsource.org.aopalliance-1.0.0.jar
 aspectJ的开发包
  com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
  spring-aspects-4.2.4.RELEASE.jar
2.引入配置文件(AOP约束,注解约束)
<?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"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd">
</beans>
3.创建实现类
public interface UserService {
    public void save();
    public void update();
    public void delete();
}
@Service(value="userService")
public class UserServiceImpl implements UserService {
    @Override
    public void save() {
        // TODO Auto-generated method stub
        System.out.println("业务层:保存客户..");
    }
    @Override
    public void update() {
        // TODO Auto-generated method stub
        System.out.println("业务层:更新客户..");
    }
    @Override
    public void delete() {
        // TODO Auto-generated method stub
        System.out.println("业务层:删除客户..");
    }
}
4.将实现类托管于Spring注解方式

5.创建切面类
public class MyAspectAnn {
    public void log(){
        System.out.println("前置通知..");
    }
public void arround(ProceedingJoinPoint joinPoint){
        System.out.println("环绕通知1..");
        System.out.println("环绕通知2..");
    }
    public void after(){
        System.out.println("后置通知..");
    }
}
6.将切面类托管于Spring

7.定义切面类方法的切入点

8.在配置文件中开启自动代理,并扫描注解
    <!-- 扫描注解 -->
    <context:component-scan base-package="com.spring.demo1"/>
    <!-- 开启自动代理 -->
    <aop:aspectj-autoproxy/>
9.编写测试代码
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class Demo1 {
    @Resource(name="userService")
    private UserService userService;
    @Test
    public void m01(){
        System.out.println("=======================");
        userService.save();
        System.out.println("=======================");
        userService.update();
        System.out.println("=======================");
        userService.delete();
        System.out.println("=======================");
    }
}
效果:

【核心核心】8.Spring【AOP】注解方式的更多相关文章
- spring aop注解方式与xml方式配置
		
注解方式 applicationContext.xml 加入下面配置 <!--Spring Aop 启用自动代理注解 --> <aop:aspectj-autoproxy proxy ...
 - 转:Spring AOP 注解方式实现的一些“坑”
		
使用过Spring AOP的注解方式实现,也入过不少坑,现在做一下记录,希望有同样需求的朋友可以少走弯路 使用之前还是先过一下官方文档吧,至少可以少走弯路,不用担心英文读不懂,其实只看代码例子就能理解 ...
 - Spring Aop 注解方式参数传递
		
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
 - (转)使用Spring的注解方式实现AOP的细节
		
http://blog.csdn.net/yerenyuan_pku/article/details/52879669 前面我们已经入门使用Spring的注解方式实现AOP了,现在我们再来学习使用Sp ...
 - (转)使用Spring的注解方式实现AOP入门
		
http://blog.csdn.net/yerenyuan_pku/article/details/52865330 首先在Eclipse中新建一个普通的Java Project,名称为spring ...
 - Spring系列之aAOP  AOP是什么?+xml方式实现aop+注解方式实现aop
		
Spring系列之aop aop是什么?+xml方式实现aop+注解方式实现aop 什么是AOP? AOP为Aspect Oriented Programming 的缩写,意识为面向切面的编程,是通过 ...
 - 来一手 AOP 注解方式进行日志记录
		
系统日志对于定位/排查问题的重要性不言而喻,相信许多开发和运维都深有体会. 通过日志追踪代码运行状况,模拟系统执行情况,并迅速定位代码/部署环境问题. 系统日志同样也是数据统计/建模的重要依据,通过分 ...
 - Spring AOP配置方式
		
AOP 面向切面编程,允许在 java 应用中的方法调用的前后做一些处理. 本文通过实例介绍两种主要的Spring AOP 配置方式:xml 方式配置,注解方式配置 XML 方式配置 1. 项目包类结 ...
 - Spring AOP注解为什么失效?90%Java程序员不知道
		
使用Spring Aop注解的时候,如@Transactional, @Cacheable等注解一般需要在类方法第一个入口的地方加,不然不会生效. 如下面几种场景 1.Controller直接调用Se ...
 - Spring AOP注解形式简单实现
		
实现步骤: 1:导入类扫描的注解解析器 命名空间:xmlns:context="http://www.springframework.org/schema/context" xsi ...
 
随机推荐
- APB简介
			
一.血缘 AMBA: Advanced Microcontroller Bus Architecture 高级处理器总线架构 AHB: Advanced High-performance Bus 高级 ...
 - thinkphp 插件控制器
			
3.2.2版本开始支持插件控制器的调用,可以通过更加方便的URL地址访问到模块中的插件定义的控制器. 当URL中传入插件控制器变量的时候,会自动定位到插件控制器中的操作方法. 大理石平台精度等级 插件 ...
 - Objective-C 中的 Meta-class 是什么?
			
在这篇文章中,我关注的是 Objective-C 中的一个陌生的概念-- meta-class.在 Objective-C 中的每个类都有一个相关联的 meta-class,但是你很少会直接使用 me ...
 - Java-Maven-pom.xml-project-repositories:repositories
			
ylbtech-Java-Maven-pom.xml-project-repositories:repositories <!--发现依赖和扩展的远程仓库列表. --> 1. platfo ...
 - c语言 局部变量做返回值 问题
			
一般的来说,函数是可以返回局部变量的. 局部变量的作用域只在函数内部,在函数返回后,局部变量的内存已经释放了.因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错.但是如果返回的是局部变量的地 ...
 - 字段username没有默认值查询(设计数据库一定要养成好习惯,不是主键最好设置为可以为空)
			
今天创建了一个表,但是username作为外键(不是主键)没有设置为可以为空,结果提交表单时忘记写username就报错了
 - Walk Through Squares HDU - 4758 AC自动机+简单状压DP
			
题意:给你两个串,求用m个R,n个D能组成多少个包含这两个串 题解:先构造一个AC自动机记录每个状态包含两个串的状态, 状态很容易定义 dp[i][j][k][status]表示在AC自动机K这个节点 ...
 - Linux 通用数据结构说明
			
device_driver include/linux/device.h struct device_driver { const char * name; /* 驱动名称 * ...
 - linux sudo命令失败 提示sudo:/usr/bin/sudo 必须属于用户 ID 0(的用户)并且设置 setuid 位
			
sudo:/usr/bin/sudo 必须属于用户 ID 0(的用户)并且设置 setuid 位 一.前言 这是一个神奇的错误,缘由是因为有人将/usr/bin/sudo的权限改为777或其他. 解决 ...
 - 转载别人的ftp,觉得目录结构不错,学习
			
开发简单的FTP:1. 用户登陆2. 上传/下载文件3. 不同用户家目录不同4. 查看当前目录下文件5. 充分使用面向对象知识 REDMAE 1 用户登陆 2 3 1.查看用户目录文件 4 2.上传文 ...