Spring基础知识理解

控制反转:传统程序中,程序主动new进行创建对象,是程序控制了(主动创建了)依赖对象(即外部资源的获取),而反转以后是外部资源(通过容器给予)给你什么你就得到什么(这里外部资源给你的方式就是注入依赖(容器设置值得过程)的方式,这里有三种注入方式:1、通过构造方法传递。2、通过setter注入。3、通过接口)。

实际意义:实现了service层和dao层的解耦工作。service和dao实现了分离,没有直接依赖关系,及dao的实现发生了改变,应用本身不需要改变。

面向切面:AOP。
    OOP的模块化的关键单位是类,AOP的模块化的关键单位是切面。把横切关注点在概念上独立于业务逻辑,
    如日志记录、声明性事务、安全性和缓存等(这些功能以我目前的编程水平来看实在达不到使用这些功能,所以没啥太多的理解)。
    总的来说就是把一些非业务功能的功能切面出来单独管理。
    AOP是OOP的一种扩展与优化。


Spring通过XML、Java注释或Java代码来配置元数据。Spring IoC(Inversion of Control)容器利用Java的POJO类(普通的java类)和配置元数据来完成配置和可执行的系统或应用程序。

Spring提供了多种容器,比较常用两种:Spring BeanFactory容器和Spring ApplicationContext容器。

Spring ApplocationContext包含了Spring BeanFactory功能,但是Spring BeanFactory速度更快。

容器这个抽象的概念怎么理解?ApplicationContext上下文怎么理解?
容器是一个类似工厂的地方,例如Tomcat就是servlet的容器,负责了对象的整个生命周期——创建、装配、销毁。
所以,简单来说容器就是负责对象(bean)管理服务的一个地方。可以通过上下文来理解容器,什么是上下文,简单点说上下文就是容器的对象,我们通过new一个上下文出来,才能使用容器这个抽象概念的API接口,是对Spring容器抽象的实现。

容器的实际意义是什么?
容器实质上是为了解耦产生的。你只要将你需要的IoC容器替你管理的对象基于xml也罢,java注解也好,总之你要将需要管理的对象(bean)、bean之间的协作关系配置好,然后利用应用上下文对象加载进我们的Spring容器,容器就能为你的程序提供你想要的对象管理服务了。


Spring在tomcat服务器启动的时候,会把配置文件里边的东西执行一遍,将我们需要装载的controller全部实例化一遍,并且将里边的需要赋值的属性全部赋值(例如service层的类),如果该属性需要其他属性的支持,则该属性内其他属性的值也会赋值好(例如service层需要dao层的支持,dao层需要框架模板的支持)。我们只关心调用即可!

Spring做了map映射,也就是ioc容器,它在内存中维护着一个巨大的hash表,表中key是路径,value是对象,也就是我们的controller层的一个类。在程序启动的时候,spring生成hash表,并等待请求的到来。

扫描二维码关注公众号,回复: 6207976 查看本文章

浏览器发出http/https请求后,tomcat服务器解析出请求路径,struts或者springmvc框架进一步解析请求的是哪个类对象的路径,然后向spring要这个类对象根据key的路径,然后框架再解析出调用哪个方法,根据该对象获取里边的方法,进行调用处理参数数据,返回响应数据,struts或者springmvc框架再根据响应的数据进行页面的渲染以及返回,一次请求完成。

猜你喜欢

转载自blog.csdn.net/qq_33459121/article/details/82257440