SpringIOC,DI,MVC的基本执行原理

IOC:Inversion Of Controller(控制反转),作为一个容器用于保存spring管理的所有对象

目标:使用SpringIOc容器管理对象

 1.需要了解哪些对象是被Spring容器管理的.(doScanner)方法:读取配置文件(我这里是.propertis文件,也可以是xml,yml文件)或者是注解。首先是扫描开发者声明哪些包下及其子包下类中有注解的例如@Controller,@Service,等注解。

2.这些需要交给Spring管理的类进行初始化.doInstance()方法。按照扫描的结果。将对象进行初始化。优先使用之前扫描到,声明的beanNae,若是没有则使用类名首字母消息作为ioc容器中的key.value是类的全路径保存到容器中。

DI(Dependency Injection)依赖注入.需要使用SpringIOC容器中的对象。需要在注解或者配置声明。当对象之间有依赖关系时。可以利用spring保存的对象关系

目标:spring保存的对象依赖关系,将对象从IOC容器中取出来进行注入。

步骤:

 1)判断哪些对象需要注入

方法:读取配置文件或者注解(@Autowired),判断出哪些对象是需要注入的,

2)怎么注入

方法:如果用户只有声明beanName,直接从IOC容器中取出相对应的对象进行注入若没有,根据类型进行注入。(此处一个接口只能有一个实现类,若有多个,且都交由spring管理,且未制定beanName,则在IOC步骤就会报错)

 

MVC:Model-View-Controller,model是指模型表示业务规则,View:是指用户看并与之交互的界面,controller:是指控制器接受用户的输入并调用模型和视图去完成用户的需求,MVC的目的:在于将M和V的实现代码分离。而Spring MVC其实做的就是存储url和Method的对应关系,实现传入url调用制定控制器,进行制定业务规则,返回相应的view。
    目标:存储url和Method的对应关系,实现传入url调用制定控制器,进行制定业务规则,返回相应的view

1)找到需要在handlerMapping中记录的类与方法

方法:扫描注解或者配置文件,读取类以及方法的RequestMapping中的值

2)将URL和method的对应关系存储到handlerMapping中

方法:将类的RequestMappong的值+方法的RquestMapping的值拼接作为URL,将URL作为key,method作为值,存储到handlerMapping

 3)用户调用
        基于serverlet的实现,在doPost()中执行doDispatch()方法,通过url从handlerMapping中找到指定的方法,使用反射进行调用。

posted @ 2020-04-20 16:57  花火的夜空  阅读(460)  评论(0)    收藏  举报