栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringAOP和MVC拦截器如何实现?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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中通常指数据层方法或者业务层方法

事物传播行为

  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的访问进行增强

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/845867.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号