Spring核心之代理模式

代理实现程序功能的统一维护的一种技术。
AOP 的作用:不修改源码的情况下,程序运行期间对方法进行功能增强
好处: 1 、减少代码的重复,提高开发效率,便于维护。
           2 、专注核心业务的开发。
核心业务和服务性代码混合在一起
开发中:各自做自己擅长的事情,运行的时候将服务性代码织入到核心业务中。
通过 spring 工厂自动实现将服务性代码以切面的方式加入到核心业务代码中。

代理模式

代理:自己不做,找人帮你做。
代理模式:在一个原有功能的基础上添加新的功能。
分类:静态代理和动态代理。

 

首先,新建一个service包,作为业务层,业务层新建代码UserService 

package com.lr.spring.service;

public interface UserService {
    void insert();
}

 再新建一个staticProxy(静态的代理服务器)包,写UserService的实现类放在staticProxy包里

1.代码逻辑

目标对象

package com.lr.spring.staticProxy;

import com.lr.spring.service.UserService;
//目标对象
public class UserServiceImpl implements UserService {
    @Override
    public void insert() {
        System.out.println("目标对象的方法:插入一个User对象");
    }
}

 代理对象

package com.lr.spring.staticProxy;

import com.lr.spring.service.UserService;
//代理对象
public class UserServiceProxy implements UserService {
    //1.注入目标对象,底层我们依然需要去调用目标对象中接口的方法
    private UserService userService;
    //构造方法
    public UserServiceProxy(UserService userService) {
        this.userService = userService;
    }

    //2.需要对目标对象的特定方法进行增强(加上事务),调用目标对象的方法
    @Override
    public void insert() {
        try{
            System.out.println("开启事务");
            userService.insert();//调用目标对象的方法
            System.out.println("提交事务");
        }catch (Exception e){
            System.out.println("回滚事务");
        }finally {
            System.out.println("最终操作");
        }

    }
}

测试目标对象与代理对象

@Test
    public void test01() {
        //目标对象
        UserService userService = new UserServiceImpl();
        userService.insert();
        System.out.println("..................");
        //代理对象
        UserServiceProxy userServiceProxy = new UserServiceProxy(userService);
        userServiceProxy.insert();
    }

面向切面编程思想

AOP Aspect Oriented Programming 的缩写,意思为 面向切面编程 ,是通过预编译方式和运行期动态 代理实现程序
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值