浅谈Spring
参考文章:
https://www.ibm.com/developerworks/cn/java/j-lo-spring-principle/
参考书籍:
《SPRING技术内幕:深入解析SPRING架构与设计原理》
《Spring源码深度解析》
Spring是一个开源的轻量级的Java开发框架。Spring FrameWork中有两个重要的概念,IoC、AOP。
使用Spring框架的好处是什么?
- 轻量:Spring 是轻量的,基本的版本大约2MB。
- 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。
- 面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。
- 容器:Spring 包含并管理应用中对象的生命周期和配置。
- MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。
- 事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。
- 异常处理:Spring 提供方便的API把具体技术相关的异常(比如由JDBC,Hibernate or JDO抛出的)转化为一致的unchecked 异常。
什么是IoC?
Ioc是Spring中实现Inversion of Control控制反转理念的容器,负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期。我们传统对象的生命周期一般由引用对象进行管理(A→B),但这样不利于解耦、调试。所以出现了控制反转模式,通过中间添加一层容器负责创建管理对象,它反转了A→B的模式转为A←IOC→B的模式,利于程序解耦,这个容器就是IOC容器。
单例Bean从缓存中获取:
1:singletonObjects 1级缓存,用来保存BeanName和创建bean实例之间的关系
2:earlySingletonObjects 2级缓存,用来保存BeanNae和创建Bean实例间关系,与
1级缓存的区别时2级缓存中的Bean在创建过程中也可被获取到。
3:singletonFactories 3级缓存,保存BeanName和bean工厂的关系。
实例化单例Bean首先从1级缓存获取,无则到2级缓存获取,无则到3级缓存获取,如果获取到
则取出bean放入二级缓存并移出3级缓存中Factory。
如果缓存中都没有则创建bean
IoC重要的类
BeanFactory:IoC容器父类
BeanDefinitionReader:
。。。
IoC容器启动过程:(有空拜读源码了解下)
2、IoC容器的初始化,初始化在refresh()函数中
1、BeanDefinition资源的定位,Spring用Resource接口统一对bean定义资源的读写操作,包括XML、类和其他类型的bean资源,资源的定位由ResourceLoader去完成。
2、XXBeanDefinitionReader负责完成对资源的解析得到BeanDefinition实例,BeanDefinitionRegistry将实例BeanDefinition注册到IoC容器DefaultListableBeanFactory中,
3、设置BeanFatory的后置处理,调用它,注册它。。。。
4、实例化单例Bean,并且依赖注入,(BeanDefinitionResolver类)



Bean生命周期中的接口

什么是AOP?
在OOP中,正是这种分散在各处且与对象核心功能无关的代码(横切代码)的存在,使得模块复用难度增加。AOP则将封装好的对象剖开,找出其中对多个对象产生影响的公共行为,并将其封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),切面将那些与业务无关,却被业务模块共同调用的逻辑提取并封装起来,减少了系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。
解决循环依赖?
浅谈Spring的更多相关文章
- 浅谈Spring中的Quartz配置
浅谈Spring中的Quartz配置 2009-06-26 14:04 樊凯 博客园 字号:T | T Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz,下面就看看在 ...
- 浅谈Spring的两种配置容器
浅谈Spring的两种配置容器 原文:https://www.jb51.net/article/126295.htm 更新时间:2017年10月20日 08:44:41 作者:黄小鱼ZZZ ...
- 1.1浅谈Spring(一个叫春的框架)
如今各种Spring框架甚嚣尘上,但是终归还是属于spring的东西.所以在这里,个人谈一谈对spring的认识,笔者觉得掌握spring原理以及spring所涉及到的设计模式对我们具有极大的帮助.我 ...
- 浅谈Spring MVC知识
关于MVC框架,我相信大家都不陌生,都会说也就是模型-视图-控制器这三层的框架结构,如果你参加面试的时候考官会问:“MVC框架是什么?你说一说.”其实我们都知道这个问题还需要问的,只要你是一个开发人员 ...
- 浅谈Spring发展史
1 码农的春天----------Spring来了 Spring官网 :http://www.springframework.org 关于Spring的发展起源要回溯到2002年,当时正是Java E ...
- 浅谈spring 声明式事物
此处主要讲讲事物的属性. 事物属性包含了五个方面: 1.传播行为 2.隔离规则 3.回滚规则 4.事物超时 5.是否只读 一.传播行为 事务的第一个方面是传播行为(propagation behavi ...
- 浅谈spring security 403机制
403就是access denied ,就是请求拒绝,因为权限不足 三种权限级别 一.无权限访问 <security:http security="none" pattern ...
- [SSH 3]以网上商城项目浅谈spring配置
导读:在做ITOO项目的时候,就用到了容器+反射,从而运用了依赖注入和依赖查找.如果看过WCF端的配置文件,那么对于这个spring的配置就很容易理解.本篇博客,是对于自己做的一个小项目中所运用到的s ...
- 浅谈Spring(四)
一.Spring+MyBatis整合 spring大大简化了Mybatis的开发步骤. 1.MyBatis的开发要点: mybatis-config.xml配置文件:配置与数据库的链接.mapper文 ...
- 浅谈Spring(三)
一.基础Spring的标准测试 1.导入spring与junit继承的jar 2.引入注解 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfig ...
随机推荐
- centos7系统优化-转载
禁用SELINUX # grep -i ^selinux /etc/selinux/config SELINUX=enforcing SELINUXTYPE=targeted 注释掉上面2行,并增加 ...
- NanoPC-T4/RK3399开发板Ubuntu FriendlyCore系统开机自动运行客户程序
RK3399开机自动运行客户程序 比如hellohello.c 交叉编译:aarch64-linux-gcc hello.c -o hello使用SecureCRT软件通过串口下载到开发板rz修改文件 ...
- [例子]Ubuntu虚拟机设置固定IP上网
宿主机器 win7 linux Ubuntu 14.04 LTS 参考: Linux系列:Ubuntu虚拟机设置固定IP上网(配置IP.网关.DNS.防止resolv.c ...
- WEB 性能优化导图
看了一下网上对于web性能优化的一些帖子,不是很直观,花了点时间画了一个思维导图. refers: https://segmentfault.com/a/1190000011936772 https: ...
- Kong(V1.0.2)Network & Firewall
介绍 在本节中,您将找到关于Kong推荐的网络和防火墙设置的摘要.PortsKong使用多个连接用于不同的目的. 代理 管理api Proxy 代理端口是Kong接收传入流量的地方.有两个端口具有以下 ...
- 在linux中输出每个group的用户成员
先提供使用文件一步一步获取相关信息: 1. 获取所有的用户: awk -F: '{print $1 > "1.txt"}' /etc/passwd 2. 获取每个用户, 及其 ...
- Scrapy实战篇(七)之爬取爱基金网站基金业绩数据
本篇我们以scrapy+selelum的方式来爬取爱基金网站(http://fund.10jqka.com.cn/datacenter/jz/)的基金业绩数据. 思路:我们以http://fund.1 ...
- Unity暂停游戏功能
关于暂停游戏功能的做法,网上的教程以及Unity官方发布的Demo都是通过把Time.timeScale设成0来实现的,然而这会导致一些蛋疼的问题,因为Time.timeScale是全局变量,改成0后 ...
- FTP上传文件,报错java.net.SocketException: Software caused connection abort: recv failed
FTP上传功能,使用之前写的代码,一直上传都没有问题,今天突然报这个错误: java.net.SocketException: Software caused connection abort: re ...
- 游戏AI
玩游戏太累了,我或许可以写一个机器人帮我玩游戏发QQ发空间啥的