目录
对Spring优点的理解:
首先Spring框架最重要的两个功能就是IOC(控制反转)+AOP(面向切面编程)
Spring的特点:
1.低侵入性设计(意思就是说它的类或者接口并没有任何迹象表明了它们是Spring的组件;也就是说这个类在Spring应用或者非Spring应用中都能发挥这同样的作用);
2.降低耦合度;(比如说你把类的权限交给了IOC容器中,那么B类要用到你所放入容器的A类,只需注入就可以实现A类方法了,而不是new一个A类对象....,而这个IOC容器就可以理解为饭桌上装饭的容器,A和B类相当于是两个碗,你A挖B的饭,B挖A的饭,那饭不就耦合了吗,那碗多了的话,相互挖那还吃屁啊,一个意思);
IOC=工厂模式+反射+配置文件读取—>所有的javaBean都被IOC容器管理,你需要的时候只要跟他说一声就行了,然后IOC就会给你一个正确的对象;
3.与第三方框架有良好的整合效果(不能很体会到,我是菜鸡);
BeanFactory与Application的区别:
BeanFactory是Spring容器的接口,并且是根接口,而ApplicationContext是它的子接口,通常我们是用ApplicationContext来访问Spring容器的;
BeanFactory:
提供了实例化对象和拿对象的功能;
在启动时不会实例化bean,而是在运行时中从容器拿的时候才会实例化,并不是之前就实例化好的,反射机制;
好处:占用资源少;
ApplicationContext:
应用上下文,继承了BeanFactory接口,可以理解为更高一级的容器,有更多的功能:
1.国际化;2.访问其他资源;3.AOP ;4.消息发送,响应机制;
在容器启动的时候就吧所有的Bean全部实例化,并且我们可以配置@lazy进行延迟实例化—>(
也就是说,我们只有访问对应资源的时候,要用到这个bean的时候才会实例化);
好处:在启动时候就把所有的bean加载了,有利于尽早发现配置问题;
我们一般都是通过applicationContext加载配置文件从而将bean注册到容器中(或者是注解方式)
SpringBean的生命周期:
对于如下这些方法,我们可以分成如下几类
我们知道对于普通的java对象来说,它们的生命周期就是
- 实例化
- 不再使用的时候通过垃圾回收机制进行回收
Spring IOC理解:
IOC首先一种设计思想。对象的创建有自己控制—>第三方Spring容器控制(个人认为就是获取对象的方式发生了改变);
Spring AOP思想:
实现:
(10条消息) Spring-AOP的几种方式_Fairy要carry的博客-CSDN博客
他在Spring中主要表现两个方面:
1.提供声明式事务管理;
2.支持自定义切面;
而切面编程,个人认为就是对之前自己的编程的内容所进行的补充;而切面的编程AOP思想本身是基于动态代理实现的,有利于降低耦合性;
对比与面向对象编程OOP,OOP是将程序分为了各个层次的对象,而AOP是将程序运行过程分解为各个切面;
(10条消息) 静态代理与动态代理的思考_Fairy要carry的博客-CSDN博客
那么问题来了,为什么要用动态代理模式呢?
因为切面编程无非就是增加我们需要的内容,在运行时我们需要增加什么内容再去增加就比较方便,容易维护,动态代理也也就是这样的思想;
SpringMVC工作流程:
1.用户发送请求给到前端控制器DispatcherServlet;
2.DispatcherServlet接收到请求后,调用HandlerMapping处理器映射器:为的就是找到处理请求对应的处理器;
3.生成处理器对象并且返回给DispatcherServlet;
4.然后DispatcherServlet通过HandlerAdapter处理器适配器调用对应的处理器;
5.执行处理器(也就是后端控制器Controller);
6.执行完后返回ModelAndView;
7.HandlerAdaper将controller执行的的结果ModelAndView返回给DispatcherServlet;
8.然后DispatcherServlet将ModelAndView返回给具体的视图层View;
9.DispatcherServlet然后对View中的视图进行数据渲染,将后台的数据渲染到页面上;
7.最后响应给用户;
(10条消息) SpringMVC流程_Fairy要carry的博客-CSDN博客
一些其他的Spring内容:
(10条消息) Spring的一些注意问题以及感悟_Fairy要carry的博客-CSDN博客
(10条消息) 简单拦截器实现—MVC_Fairy要carry的博客-CSDN博客
(10条消息) SSM-项目整合简单思路_Fairy要carry的博客-CSDN博客