(6)Spring框架——基于代理类的AOP(只是一个示例,原理没弄明白。)

news/2024/7/4 9:43:46

目录

 

一、准备工作

二、步骤

(一)导入需要的jar包

(二)创建目标类

(三)创建切面类

(四)创建xml文件

(五)创建测试类

三、例子


一、准备工作

(一)导入JAR包:

aopalliance-1.0.jar 这个jar包可以到官网去下载。

二、步骤

(一)导入需要的jar包

(二)创建目标类

(三)创建切面类

(四)创建xml文件

(五)创建测试类

三、例子

(一)导入需要的jar包

(二)创建目标类接口,名为:userDao,接口实现类,名为:UserDaoIpml

package com.stx.chapter03.jdkProxy.jdk;

public interface UserDao {
    public void addUser();
    public void deleteUser();
}
package com.stx.chapter03.jdkProxy.jdk;

/**
 * 目标类。
 * */
public class UserDaoImpl implements UserDao {
    @Override
    public void addUser() {
        System.out.println("添加用户  chapter03");
    }

    @Override
    public void deleteUser() {
        System.out.println("删除用户 chapter03");
    }
}

(三)创建切面类,名为:MyAspect

package com.stx.chapter03.factoryBean;

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

public class MyAspect implements MethodInterceptor {
    @Override
    public Object invoke(MethodInvocation methodInvocation) throws Throwable {
        check_Permission();
//      执行目标方法。
        Object obj=methodInvocation.proceed();
        log();
        return obj;
    }
    public void check_Permission(){
        System.out.println("检查日志!");
    }
    public void log(){
        System.out.println("模拟记录日志!");
    }
}

(四)创建xml文件,名为:applicationContext1.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="userDao" class="com.stx.chapter03.jdkProxy.jdk.UserDaoImpl"></bean>
<!--    切面类-->
    <bean id="myAspect" class="com.stx.chapter03.factoryBean.MyAspect"></bean>
<!--    使用Spring代理工厂定义一个名称为userDaoProxy的代理对象。-->
    <bean id="userDaoProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
<!--       指定代理实现的接口-->
        <property name="proxyInterfaces" value="com.stx.chapter03.jdkProxy.jdk.UserDao"></property>
<!--        指定目标对象-->
        <property name="target" ref="userDao"></property>
<!--        指定切面,植入环绕通知-->
        <property name="interceptorNames" value="myAspect"></property>
<!--        指定代理方式,true:使用CGLIB ,false(默认):使用jdk动态代理-->
        <property name="proxyTargetClass" value="true"></property>
    </bean>

</beans>

(五)创建测试类,名为:ProFactoryBeanTest

package com.stx.chapter03.factoryBean;

import com.stx.chapter03.jdkProxy.jdk.UserDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class ProFactoryBeanTest {
    public static void main(String[] args) {
        String xmlPath = "com/stx/chapter03/factoryBean/applicationContext1.xml";
        ApplicationContext applicationContext
                = new ClassPathXmlApplicationContext(xmlPath);
        UserDao userDao =(UserDao) applicationContext.getBean("userDaoProxy");
        userDao.addUser();
        userDao.deleteUser();
    }
}


http://www.niftyadmin.cn/n/4557289.html

相关文章

scala成长之路(1)基本语法和数据类型

scala作为JVM上的Lisp&#xff0c;是一种geek类型的编程语言&#xff0c;也一直是我等java程序员眼中的梦寐以求的一门技能&#xff0c;遂下定决心花一段时间好好学习scala。第一天学习&#xff0c;主要介绍与java在编程上的主要区别。 首先&#xff0c;scala默认导入了java.la…

郁闷哦 怎么才能学好哦 C语言怎么那么难呢

searchC%E8%AF%AD%E8%A8%80%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B&restype-1&id10000000&ty0&pattern0 ||| 多看书多打代码 一步步学 很容易学好C语言 最简单而效率又高得办法 很好玩的 然后根据自己的理解 就是找一些简单的例子在电脑上敲 不要吧它想得那么难…

MikroTik RouterOS安装方法收集(转)

注意&#xff1a;ROS无法使用U盘安装&#xff0c;如果要使用ISO文件进行安装就必须使用光驱以及刻录成光盘&#xff0c;并且只能使用IDE的光驱。 一、首先了解常见的ROS硬件架构&#xff1a; X86架构&#xff08;也是最常用的&#xff09;mipsbe&#xff08;欧米tik、部分RB系列…

(7)Spring框架——Spring JdbcTemplate

目录 一、目录结构 二、定义一个XML&#xff0c;名为&#xff1a;applicationContext.xml。位置放在了src下面。 二、编写测试类&#xff0c;名为:JdbcTemplateTest 三、其他情况 一、目录结构 二、定义一个XML&#xff0c;名为&#xff1a;applicationContext.xml。位置放在…

EwoMail 开源邮件服务器安装教程

安装环境 centos6/7系统&#xff0c;服务器需要干净环境&#xff0c;最好是全新安装的系统。 最低配置要求CPU&#xff1a;1核内存&#xff1a;1G硬盘&#xff1a;40G 检查swap 如果没启动swap&#xff0c;这会导致EwoMail的防病毒组件不能启动&#xff0c;所以在安装前先检查s…

(7.1)Spring框架——Spring JdbcTemplate

目录 一、概述 &#xff08;一&#xff09;、是配置数据库的Bean。 &#xff08;二&#xff09;、配置JDBC模板。 &#xff08;三&#xff09;、配置注入类。 二、步骤 &#xff08;一&#xff09;编写实体类。 &#xff08;二&#xff09;编写接口。 &#xff08;三&a…

求解一道Java面试题。

答案是E 当demo null; 不会马上就回收 因为java垃圾回收机制是根据自身内存情况而定