spring AOP 实现方式3

IUserService.java 

package com.qfedu.aop03;

import java.util.List;

public interface IUserService {

    static public final int num1 = 1;
    public final static int num2 = 1;
    final public static int num3 = 1;
    public static final int num4 = 1;

    /**
     * 获取所有的用户对象列表
     * @return
     */
    List<Object> getAllUser();

    /**
     * 保存用户
     * @param user
     * @return
     */
    boolean saveUser(Object user);

    /**
     * 根据用户uid删除该uid对应的用户信息
     * @param uid
     * @return
     */
    boolean deleteUser(int uid);

    /**
     * 更新指定用户信息
     * @param obj
     * @return
     */
    boolean updateUser(Object obj);
}

UserServiceImpl.java

package com.qfedu.aop03;

import org.springframework.context.ApplicationContext;

import java.util.ArrayList;
import java.util.List;

public class UserServiceImpl implements IUserService {

    private final int num;

    {
        //num = 10;
    }

    UserServiceImpl(){
        num = 10;
    }

    @Override
    public List<Object> getAllUser() {
        System.out.println("--------getAllUser----------");
        return new ArrayList<>();
    }

    @Override
    public boolean saveUser(Object user) {
        System.out.println("--------saveUser----------");
        return true;
    }

    @Override
    public boolean deleteUser(int uid) {
        System.out.println("--------deleteUser----------");
        return false;
    }

    @Override
    public boolean updateUser(Object obj) {
        System.out.println("--------updateUser----------");
        return true;
    }
}

MyAspect.java

package com.qfedu.aop03;

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;

public class MyAspect implements MethodInterceptor {

    private void before(){

        System.out.println("---------before----------");

    }

    private void after(){

        System.out.println("---------after----------");

    }

    @Override
    public Object invoke(MethodInvocation invocation) throws Throwable {

        before();

        //  业务处理方法的调用
        Object obj = invocation.proceed();

        after();

        return obj;
    }
}

beans.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="us" class="com.qfedu.aop03.UserServiceImpl" />
    <bean id="my" class="com.qfedu.aop03.MyAspect" />

    <!--
        ProxyFactoryBean代理的FactoryBean对象,我们现在要代理的是us
            包含四个属性注入:
                1.  interfaces: 接口对象们
                    <list>
                        <value>com.qfedu.aop03.IUserService</value>
                        <value>com.qfedu.aop03.IUserService</value>
                        <value>com.qfedu.aop03.IUserService</value>
                    </list>
                2.  target:目标对象,哪个对象将被以代理的方式创建
                3.  interceptorNames:拦截对象的名称,自定义的MethodInterceptor对象,注意它的包结构组成
                4.  optimize:boolean类型的值:
                        true:强制使用cglib的动态代理方式
                        false:使用jdk自带的动态代理

                        cglib:code generation library,代码生成库,性能更高

    -->
    <bean id="proxy" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="interfaces" value="com.qfedu.aop03.IUserService" />
        <property name="target" ref="us" />
        <property name="interceptorNames" value="my" />
        <property name="optimize" value="true" />
    </bean>
</beans>

TestAOP03.java

package com.qfedu.aop03;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestAOP03 {

   // int num = 0XA;


    @Test
    public void testAOP03(){
        ApplicationContext ac = new ClassPathXmlApplicationContext("com/qfedu/aop03/beans.xml");

        IUserService us = ac.getBean("proxy", IUserService.class);

        Object o = new Object();

        System.out.println(us.getAllUser());
        System.out.println(us.deleteUser(1));
        System.out.println(us.saveUser(o));
        System.out.println(us.updateUser(o));
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值