zoukankan      html  css  js  c++  java
  • spring实现的基本思路

    spring实现的基本思路

    配置阶段

    • 配置web.xml
      • DispatchServlet
    • 设定init-param
      • 设置初始化参数的文件的加载路径contextconfigLoacation = classpath:application.xml
    • 设定url-pattern
      • /*
    • 配置Annotation
      • @Controller @Service @Autowried @RequestMapping...

    初始化阶段

    • 调用init()方法
      • 加载配置文件
    • IOC容器初始化
      • Map<String,Object>
    • 扫描相关的类
      • scan-package="com.demo"
    • 创建实例并保存到容器——IOC
      • 通过反射机制将类实例化放入容器中
    • 进行DI操作——DI
      • 扫描IOC容器中的实例,给没有赋值的属性自动赋值
    • 初始化HandlerMapping——MVC
      • 将一个Url和一个方法进行一对一的关联映射Map<String,Method>

    运行阶段

    • 调用doGet()/doPost()
      • Web容器调用doGet/doPost方法,获得request/response对象
    • 匹配HandlerMapping
      • 从request对象中获得用户输入的url,找到对应的Method
    • 反射调用method.invoker()
      • 利用反射调用方法并返回结果
    • response.getWrite().write()
      • 将返回结果输入到浏览器

    代码实现逻辑

    • 1、加载配置文件
    • 2、扫描相关的类
    • 3、初始化IOC容器,初始化扫描到的类,并且加入IOC容器中
    • 4、扫描加有注解的类,完成依赖注入
    • 5、初始化HandlerMapping,将url对应的Method注入容器
    • 6、执行service业务方法

    相关技巧

    • 将类名的首字母转小写方法
      • 先将类名转char数组
      • 再将第一个元素加32,也就是第一个字母,大小写字母的Ascii码相差32,大写字母Ascii码小于小写字母
  • 相关阅读:
    雷林鹏分享:Lua 运算符
    雷林鹏分享:PHP JSON
    不要提交代码到HEAD上
    Mr Cao 的提问
    使用masory
    git 下载单个文件 已经添加多个远程服务器
    自动生产jason的工具
    简单的应用可以用storyBoard
    《创业维艰》
    造成死锁的各种情况
  • 原文地址:https://www.cnblogs.com/erfsfj-dbc/p/11909356.html
Copyright © 2011-2022 走看看