博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring 基础
阅读量:5076 次
发布时间:2019-06-12

本文共 1547 字,大约阅读时间需要 5 分钟。

 

1. spring-mvc

  

 上边的图相信大家都熟悉

  DispatchServlet 内 默认会有

   BeanNameUrlHandlerMapping :通过对比url和bean的name找到对应的对象

  SimpleUrlHandlerMapping         :也是直接配置url和对应bean,比BeanNameUrlHandlerMapping功能更多

  RequestMappingHandlerMapping :主要是针对注解配置@RequestMapping的,已过时

------

  HttpRequestHandlerAdapter :

      要求handler实现HttpRequestHandler接口,该接口的方法为

      void handleRequest(HttpServletRequest request, HttpServletResponse response)

      也就是  handler必须有一个handleRequest方法

  SimpleControllerHandlerAdapter:

      要求handler实现Controller接口,该接口的方法为

      ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)

  RequestMappingHandlerAdapter : 和上面的RequestMappingHandlerMapping配对使用,针对@RequestMapping

  XXX HandlerInterceptor : 拦截器 

  XML初始化 mvc: intercepter

有一种 和拦截器 特别想的东西 叫,切面。

  AOP:

    Spring AOP 无需使用任何特殊命令对 Java 源代码进行编译,它采用运行时动态地、在内存中临时生成“代理类”的方式来生成 AOP 代理。

    Spring 允许使用 AspectJ Annotation 用于定义方面(Aspect)、切入点(Pointcut)和增强处理(Advice),

  <!-- 启动 @AspectJ 支持 -->
  <
bean
class="org.springframework.aop.aspectj.annotation.
AnnotationAwareAspectJAutoProxyCreator"/>
 Spring AOP默认使用标准的JDK动态代理来实现AOP代理。这能使任何借口(或者一组接口)被代理。
 

Spring AOP也使用CGLIB代理。对于代理classes而非接口这是必要的。如果一个业务对象没有实现任何接口,那么默认会使用CGLIB。由于面向接口而非面向classes编程是一个良好的实践;业务对象通常都会实现一个或者多个业务接口。强制使用CGLIB也是可能的(希望这种情况很少),此时你需要advise的方法没有被定义在接口中,或者你需要向方法中传入一个具体的对象作为代理对象。

  • 关于动态代理和CGLIB这两种方式的简要总结如下:

    • JDK动态代理(Dynamic Proxy)

      • 基于标准JDK的动态代理功能
      • 只针对实现了接口的业务对象
    • CGLIB

      • 当业务对象没有实现任何接口的时候默认会选择CGLIB

 IOC:

 

 

BeanFactory 是基础设施 对Spring内, ApplicationContext 程序上下文, 对开发者

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

转载于:https://www.cnblogs.com/shuly/p/8513473.html

你可能感兴趣的文章
看毛片算法
查看>>
selenium-百度搜索框输入后,定位联想下拉框元素
查看>>
Http的请求的全过程
查看>>
(剑指Offer)面试题38:数字在排序数组中出现的次数
查看>>
orderby
查看>>
3105: [cqoi2013]新Nim游戏
查看>>
Xcode10和iOS12,library not found for -lstdc++.6.0.9,
查看>>
Raid详解
查看>>
c++面试遇到问题
查看>>
jvm 内存参数
查看>>
【转】NDK上建立自己的项目
查看>>
web测试方法总结
查看>>
原生js实现ajax方法
查看>>
关于Win10自带输入法莫名切成繁体
查看>>
php添加gd
查看>>
实训作业1
查看>>
openSUSE12.1安装及基本设置
查看>>
简约的form表单校验插件
查看>>
我读《2017软件测试行业调查报告》
查看>>
Spring 官方教程:使用 Restdocs 创建 API 文档
查看>>