SpringAOP和MVC拦截器如何实现?

Spring、SpringMVC

Spring的系统架构

在这里插入图片描述

1.Spring的2大核心概念

1.1 IOC

将创建对象交给spring容器管理,bean实例化的三种方式 1.构造方法 2. 静态工厂 3. 实例工厂(FactorBean)

1.2 Bean的生命周期

1.创建对象 2.执行构造方法 3.执行属性注入(set操作)4.执行bean初始化方法 5. 执行业务操作 6. 销毁bean

2.1 DI

两种方法 setter 和构造器 自动装配 分按类型和按名称

2.AOP

在这里插入图片描述

连接点:在springAOP中可以理解是方法的执行

切入点:匹配连接点的式子,SpringAop中一个切入点可以只描述一个具体方法,也可以匹配多个方法

通知类:定义通知的类

通知:共性功能

切面:描述通知与切入点的对应关系

@Aspect     // 切面(描述切入点与通知的关系)
@Component
public class SpringAop {
    // 返回值 包名.类名.方法名(参数)
    @Pointcut(value = "execution(* com.liub.spring.*.*SpringAopDemo.update*(..))")  //切入点(在哪个方法执行)
    public void pointcut() {

    }

    @Around("pointcut()")  // 环绕通知
    public Object method(ProceedingJoinPoint pj) throws Throwable {
        System.out.println("方法执行之前打印");
        Integer proceed = (Integer) pj.proceed();// 目标对象
        System.out.println("方法执行之后打印");
        return proceed;
    }
}

// 配置类加上注解 EnableAspectJAutoProxy

3.Spring事物

事物管理员:发起事物方,在spring中通常指代业务层开启事物的方法

事物协调员:加入事物方,在spring中通常指数据层方法或者业务层方法

事物传播行为

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7BIsBbSX-1651246322170)(E:/Typora/image-20220428215833303.png)]

  1. 如果事物管理员有事物,那么协调员就加入,如果管理员没有事物,那么协调员新建事物

  2. 如果管理员有事物,协调员新建事物,如果管理员没有事物,那么协调员新建事物

  3. 如果管理员有事物,那么协调员加入,如果管理员没有事物,那么协议员什么都不做

  4. 不管管理员有没有事物,协调员什么都不做

  5. 如果管理员有事物,那么协调员加入,如果管理员没有事物,那么协调员报错

  6. 如果管理员有事物,那么协调员爆粗,如果管理员没有事物,那么协调员什么都不做

2.SpringMVC

SpringMVC拦截器实现

@Configuration
public class SpringMvcInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle 拦截方法前执行");
        return false;  // false 后面post和after都不会执行 如果是多个拦截器 pst不会执行
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("after...");
    }
}
@Configuration
public class SpringMvcConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new SpringMvcInterceptor()).addPathPatterns("/*");
    }
}

拦截器和过滤器有什么区别?

过滤器属于Servlet技术,且能对所有访问进行增强。拦截器是MVC技术,仅针对springmvc的访问进行增强

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值