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码小于小写字母

猜你喜欢

转载自www.cnblogs.com/erfsfj-dbc/p/11909356.html