首页 > 编程语言 > 详细

AOP:springAnnotation

时间:2017-01-21 12:56:33      阅读:246      评论:0      收藏:0      [点我收藏+]

1.文件目录:

技术分享

2.实体类

package com.wangcf.po;

public class User {
    private int id;
    private String name;
    private String password;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

3.接口:

package com.wangcf.manager;

import com.wangcf.po.User;


public interface IUserManager {
    
    public void addUser();
    
    public void addUser(User user);
    public void delUser(int uid);
    
    public User modifyUser(User user);
}

4.实现类:

package com.wangcf.manager;

import com.wangcf.po.User;


public class UserManagerImp implements IUserManager{

    @Override
    public void addUser() {
        // TODO Auto-generated method stub
        System.out.println("UserManagerImp addUser..");
    }

    @Override
    public void delUser(int uid) {
        // TODO Auto-generated method stub
        System.out.println("UserManagerImp delUser..");
    }

    @Override
    public User modifyUser(User user) {
        // TODO Auto-generated method stub
        user.setName(user.getName()+",修改后的");
        System.out.println("UserManagerImp modifyUser..");
        return null;
    }

    @Override
    public void addUser(User user) {
        // TODO Auto-generated method stub
        System.out.println("UserManagerImp addUser(User user)...");
    }

}

5.切面:

package com.wangcf.manager.aspect;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;


@Aspect
/**
 * 切面类
 * @author fan
 *
 */
public class LogManager {
    @Before("execution(public void com.wangcf.manager.UserManagerImp.addUser())")
    /*addUser(..)表示带参数或不带参数
     * add*() 可以用通配符进行修饰
     * execution为切入点的指示符,还有其他的
     * advice(通知)
     */
    public static void addLogBefore(){
        System.out.println("添加日志 Before...");
    }
    
    @After("execution(* com.wangcf.manager.*.*(..))")
    public void addLogAfter(){
        System.out.println("添加日志记录 After...");
    }
    
    @AfterReturning("execution(* com.wangcf.manager.*.*(..))")
    public void addLogAfterReturning(){
        System.out.println("添加日志记录 AfterReturning...");
    }
    
    @AfterThrowing("execution(* com.wangcf.manager.*.*(..))")
    public void addLogAfterThrowing(){
        System.out.println("添加日志记录 AfterThrowing...");
    }
    
    @Around("execution(* com.wangcf.manager.*.*(..))")
    public void addLogAround(JoinPoint joinPoint){
        System.out.println("添加日志记录 AfterAround start...");
        System.out.println(joinPoint.getTarget());
        System.out.println("添加日志记录 AfterAround end...");
    }
}

6.测试类:

package com.wangcf.test;

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

import com.wangcf.manager.IUserManager;
import com.wangcf.po.User;


public class TestAction {
    public static void main(String[] args) {
        BeanFactory factory=new ClassPathXmlApplicationContext("applicationContext.xml");
        IUserManager userManager=(IUserManager) factory.getBean("userManager");
        userManager.addUser();
        System.out.println("=================");
        User user=new User();
        user.setName("张三")    ;
        userManager.addUser(user);
        System.out.println("========");
        userManager.modifyUser(null);
    }
}

7.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"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
    
    <bean name="userManager" class="com.wangcf.manager.UserManagerImp"/>
    <bean name="logManager" class="com.wangcf.manager.aspect.LogManager"/>
    <!--启用AspectJ的支持  -->
    <aop:aspectj-autoproxy/>
</beans>

8.输出

技术分享

9.总结:

在xml配置中会生成代理类

AOP:springAnnotation

原文:http://www.cnblogs.com/-beauTiFul/p/6336797.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!