目录

对Spring优点的理解:

BeanFactory与Application的区别:

SpringBean的生命周期:

Spring IOC理解:

Spring AOP思想:

SpringMVC工作流程:

一些其他的Spring内容:


对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的生命周期:

对于如下这些方法,我们可以分成如下几类

Bean自身的方法:比如构造函数、getter/setter以及init-method和destory-method所指定的方法等
Bean级生命周期方法:可以理解为Bean直接实现接口的方法,比如BeanNameAware、BeanFactoryAware、ApplicationContextAware、InitializingBean、DisposableBean等方法,这些方法只对当前Bean生效;

容器级方法(BeanPostProcessor接口...):之前的接口方法的实现类都是基于bean的,并且会注册到容器中,而这个接口的方法是对容器来说的,在其初始化前后执行接口中的方法;

BeanNameAware:该接口只有setBeanName(String Name):用于获取bean的id或者name;

BeanFactoryAware:该接口只有setBeanFactory(),用于获取当前环境的BeanFactory;

ApplicationContextAware:该接口只有一个方法setApplicationContext(ApplicationContext applicationContext),用于获取当前环境的ApplicationContext,获取到IOC容器之后,可以对bean进行操作;

InitializingBean:该接口中有afterPropertiesSet(),在属性注入完成后调用;

DisposableBean:该接口只有一个方法destroy(),在容器销毁的时候调用,在用户指定的destroy-method之前调用

BeanPostProcessor该接口有两个方法:
postProcessBeforeInitialization(Object bean, String beanName):在初始化之前调用此方法
postProcessAfterInitialization(Object bean, String beanName):在初始化之后调用此方法

通过方法签名我们可以知道,我们可以通过beanName来筛选出我们需要进行个性化定制的bean

InstantiationAwareBeanPostProcessor:
该类是BeanPostProcessor的子接口,常用的有如下三个方法
postProcessBeforeInstantiation(Class beanClass, String beanName):在bean实例化之前调用;
postProcessProperties(PropertyValues pvs, Object bean, String beanName):在bean实例化之后、设置属性前调用;
postProcessAfterInstantiation(Class beanClass, String beanName):在Bean实例化之后调用;


 我们知道对于普通的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博客

SSM思想—阶段性总结相关推荐

  1. 《仿大众点评仿美团做一个评价网站——Java SSM》项目研发阶段性总结

    <仿大众点评仿美团做一个评价网站--Java SSM>项目研发阶段性总结 一.后台功能实现 (一).注册商家 (二).登录商家中心 (三).商家登录后台操作模块 (1).用户管理模块 (1 ...

  2. Java SSM项目运用策略模式思想

    1. 策略模式简介 策略模式(Strategy Pattern)中,定义算法族(策略组),分别封装起来,让他们之间可以互相替换,此模式让算法的变更和替换独立于使用算法的客户. 策略模式中体现了如下几种 ...

  3. 测试思想 什么是软件测试(摘录)

    什么是软件测试(摘录) by:授客 QQ:1033553122 IEEE 标准的定义:使用人工或自动的手段来运行或测定某个系统的过程,其目的在于检验;它是否满足规定的需求或是弄清预期结果与实际结果之间 ...

  4. 写时复制(Copy-On-Write)思想在Java中的应用

    以下文章来源方志朋的博客,回复"666"获面试宝典 来源:https://blog.csdn.net/fuzhongmin05/article/details/117076906 ...

  5. Java高并发之设计模式,设计思想

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:大道方圆 cnblogs.com/xdecode/p/913 ...

  6. 从在线教育交易平台看系统阶段性演进

    大部分互联网公司都是业务驱动的,技术与业务的定位很简单了,技术是服务于业务的.业务在不同的发展阶段,有着不同的目标,特点和挑战.技术架构也跟随之进行演进,我们今天通过一个在线教育的交易系统平台看下平台 ...

  7. ssm上传文件获取路径_SSM文件上传

    **自己对于SSM文件上传的一些心得** 刚开始的时候也是在网上寻找一些简单的案例,可能我的这篇文章不是最好的,但是这些都是我自己慢慢的摸索以及自己的尝试的一些心得,希望对各位有所帮助. 其实文件的上 ...

  8. [转]SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)

    使用SSM(spring.SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没有记录SSM整合 ...

  9. 基于SSM实现垃圾分类信息管理系统

    项目编号:BS-XX-069 开发工具:IDEA / ECLIPSE 数据库:MYSQL5.7 应用服务器:TOMCAT8.5.31 JDK: 1.8 开发技术:Spring+Springmvc+My ...

最新文章

  1. 找出两个字符串中最大子字符串,如abractyeyt,dgdsaeactyey的最大子串为actyet
  2. 数据库设计中的14个关键技巧收藏[转]
  3. 括号匹配问题(0962)
  4. superMap添加marker及连线
  5. Android菜鸟的成长笔记(28)——Google官方对Andoird 2.x提供的ActionBar支持
  6. 4、java中的流程控制(程序结构)
  7. apache.camel_使用Apache Camel 2.14的轻松REST端点
  8. 分布式光伏补贴_光伏发电上网电价政策综述
  9. php获取服务器数据库信息,PHP获取服务器信息
  10. 马健计算机博士,马健-中国科学院大学-UCAS
  11. 判断文件是否损坏_Bash技巧:把变量赋值为换行符,判断文件是否以换行符结尾...
  12. 简单的form表单文件上传
  13. MapReduce实现WordCount
  14. vos对接移动、电信、联通各种线路
  15. 云服务器下行_阿里云ECS服务器下行带宽和上行带宽详解及选择
  16. 英国沦陷了!2014年英国婴儿名top10,穆罕默德意外夺魁
  17. 全栈之初识JWT -- Web安全的守护神
  18. 阿里云数据库(RDS)是什么,与传统数据库有什么区别?
  19. 《APUE.3E》用gdb调试ftw函数(图4-22)
  20. python类takes no arguments_Python中的学习类出现的object() takes no parameters问题

热门文章

  1. Web前端开发入门学习分享
  2. CSS实现立体字的效果
  3. 2019年6月9日更正
  4. Inkscape如何将png图片转换为svg图片并且不失真
  5. 高中计算机基础知识课件,5.1.2 信息资源管理的方式方法
  6. scratch双语教师课件文档手册 1.初识scratch
  7. RL串联等效转换为RL并联的方法及其仿真
  8. uniapp中调用震动、系统铃声以及自定义铃声
  9. 千纸鹤(小纸片)全套源码
  10. springboot搭建redis时提示RedisCommandExecutionException: CLUSTERDOWN Hash slot not served解决办法