Spring的AOP实现(1)

本文介绍了一个基于Spring框架的AOP(面向切面编程)实践案例,通过定义UserService接口及其实现类UserServiceImpl,演示了如何使用Spring AOP进行前置通知和后置通知的编程。同时,通过自定义的MyAspect类和UserFaction类创建代理对象,实现了对业务方法的增强。
摘要由CSDN通过智能技术生成

Spring的AOP实现(1)

UserService.java

package com.qianfeng.aop01;

import java.util.List;

public interface UserService {

    List getUserList();

    boolean delete(int uid);

    boolean update(Object user);

    boolean saveUser(Object user);


}

UserServiceImpl.java

package com.qianfeng.aop01;

import java.util.List;

public class UserServiceImpl implements UserService {
    @Override
    public List getUserList() {
        System.out.println("查找用户");
        return null;
    }

    @Override
    public boolean delete(int uid) {
        System.out.println("删除用户");
        return false;
    }

    @Override
    public boolean update(Object user) {
        System.out.println("修改用户");
        return false;
    }

    @Override
    public boolean saveUser(Object user) {
        System.out.println("更新用户");
        return false;
    }
}

MyAspect.java

package com.qianfeng.aop01;

public class MyAspect {

    public void Before(){
        System.out.println("---Before---");
    }

    public void After(){
        System.out.println("---After---"+'\n'+'\n');
    }
}

UserFaction.java

package com.qianfeng.aop01;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class UserFaction {
    public static UserService getUserServiceImpl(){
        UserServiceImpl userService = new UserServiceImpl();
        MyAspect aspect = new MyAspect();
        Object o = Proxy.newProxyInstance(UserFaction.class.getClassLoader(), userService.getClass().getInterfaces(), new InvocationHandler() {
            @Override
            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                aspect.Before();
                Object invoke = method.invoke(userService, args);
                aspect.After();
                return invoke;
            }
        });
        return (UserService) o;
    }
}

Aop01Text.java

package com.qianfeng.aop01;

import org.junit.Test;

public class Aop01Text {

    @Test
    public void text(){
        UserService userServiceImpl = UserFaction.getUserServiceImpl();
        userServiceImpl.delete(1);
        userServiceImpl.saveUser("");
        userServiceImpl.getUserList();
        userServiceImpl.update("");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值