springMVC的Aop

Aop是面向切面编程:是通过预编译方式和运行器动态代理实现程序功能的统一维护技术。Aop是oop的延续,是spring框架中的重要内容,是函数编程的一种衍生泛型,利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑部分之间的耦合度降低提高程序的可重用行,提高开发的效率。

Aop的作用是:

在程序运行期间,在不修改源码的情况下对方法进行功能性增强。

优势:减少重复代码,提高开发效率,并且便于维护。

Aop的底层实现:
  Aop的底层是使用Spring提供的动态代理技术实现的,在运行期间,Spring通过动态代理的技术动态的生成代理对象,代理方法的执行时进行增强功能的介入,再去调用目标对象的方法,从而实现功能的增强。

常用的动态代理:
            jdk代理,基于接口,具有局限性,需要增强的对象必须要用接口。

           cglib:基于父类的动态代理技术,不需要接口,限制小很多。

动态代理

动态代理技术原理:动态代理是依赖于动态代理对象来实现功能增强

使用JDK动态代理就相当于spring框架在创建一个接口的实现类成为目标类的兄弟类,那么就相当于目标类中的方法代理类中就有什么方法然后就可以通过代理类实现功能的增强。【目标类中自定义的方法不能进行增强】

使用cglib动态代理:就相当于spring创建目标类的一个子类,那么父类拥有什么功能子类就有什么功能,然后在基于子类进行功能增强。

jdk动态代理的的代码实现:

cglib实现动态代理对象:
Chlib是第三方技术,但是spring框架已经集成了这个第三方技术。

需要增强的类:

public class Target {

    public void  save(){
        System.out.println("save runner.");


    }


    public  void  save2(){
        System.out.println("sdjsds");
    }
}

 增强类代码:

public class Advice {
    public void brfor(){
        System.out.println("前置增强方法");
    }
    public void after(){
        System.out.println("后置增强");
    }
}

动态代理的实现:
 


public class ProxyTest {
    public static void main(String[] args)  {
        //目标对象
        final  Target   target =new Target();
        //增强对象
        final  Advice  advice=new Advice();
        //返回值是动态代理的对象,基于cglib
        //创建增强器
     
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring提供了一种开发模式,称为面向切面编程(AOP),可以通过它来实现数据库的切换。在Spring MVC中,我们可以使用AOP来拦截和修改方法的执行,以便动态切换数据库。 首先,我们需要配置Spring的AOP,以便在运行时拦截方法。这可以通过在Spring配置文件中添加以下代码来实现: ``` <aop:aspectj-autoproxy/> ``` 接下来,我们需要创建一个切面类,该类将拦截和处理我们选择的目标方法。在这个切面类中,我们可以编写切面逻辑来判断需要使用哪个数据库。下面是一个示例切面类的代码: ```java @Aspect @Component public class DatabaseSwitchAspect { @Before("execution(* com.example.controller.*.*(..))") public void switchDatabase(JoinPoint joinPoint) { // 判断需要使用哪个数据库 if (需要使用第一个数据库的条件) { // 设置第一个数据库的相关配置 DataSourceContextHolder.setDataSourceType(第一个数据库); } else { // 设置第二个数据库的相关配置 DataSourceContextHolder.setDataSourceType(第二个数据库); } } } ``` 在以上代码中,我们使用@Before注解来指定拦截哪些方法。在拦截到方法之后,我们可以在切面逻辑中根据判断条件来选择需要使用的数据库,并使用自定义的DataSourceContextHolder来动态设置数据源。 最后,我们需要在Spring配置文件中配置数据源和事务管理器。这里我们需要配置两个数据源和对应的事务管理器,以便与切面类中设置的数据源保持一致。 通过以上步骤,我们就能够实现Spring MVC中AOP的方式来动态切换数据库。当我们拦截到目标方法时,根据条件切换数据库,从而实现数据库的动态切换。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值