深入浅出SSM框架流程以及原理

本文深入探讨SSM(Spring、SpringMVC、Mybatis)框架的核心原理。Spring通过IOC容器管理bean,避免频繁使用new操作。SpringMVC的DispatcherServlet控制所有请求流程。Mybatis基于动态代理实现SQL映射,简化数据库操作。同时,文章介绍了Java反射在SSM中的重要角色,以及AOP、代理模式和IOC/DI的概念,强调它们在框架中的应用。
摘要由CSDN通过智能技术生成

前言:学ssm框架已经有很长时间,今天来复习一下
SSM图示流程:
在这里插入图片描述
Spring核心:Java反射
Mybatis:动态代理,而动态代理又是基于反射的,所以,ssm框架核心原理在反射。
(1)Spring(对象工厂): 平时开发接触最多的估计就是这个IOC容器,它可以装载bean(也就是Java中的类,当然也包括service、dao里面的),有了这个机制,就不用在每次使用这个类的时候为它初始化,很少看到关键字new。
(2)SpringMVC(视图控制器): 核心为一个DispatcherServlet,控制所有请求
这里奉上手写SpringMVC的核心DispatcherServlet源码

package servlet;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Method;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import annotation.HController;
import annotation.HRequestMapping;

/**
 * 手写SpringMVC
 * 
 * @author hxz
 * @description TODO
 * @data 2020年1月2日 上午9:39:57
 */
public class MyDispatcherServlet extends HttpServlet {
   
   //加载属性文件
	private Properties properties = new Properties();
    //装载beanname
	private List<String> classNames = new ArrayList<String>();
	//ioc容器
	private Map<String, Object> ioc = new HashMap<String, Object>();
    //类似于以前自定义的cache缓存容器,这里也是起到一个容器的作用
    //用于加载各个mapping
	private Map<String, Method> handlerMapping = new HashMap<String, Method>();
    //容器加载所有的controller
	private Map<String, Object> controllerMap = new HashMap<String, Object>();

	@Override
	public void init(ServletConfig config) throws ServletException {
   

		// 1.加载配置文件
		doLoadConfig(config.getInitParameter("contextConfigLocation"));

		// 2.初始化所有相关联的类,扫描用户设定的包下面所有的类
		doScanner(properties.getProperty("scanPackage"));

		// 3.拿到扫描到的类,通过反射机制,实例化,并且放到ioc容器中beanName默认是首字母小写
		doInstance();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值