spring源码分析-spring简介

对与优秀的框架,学习它,模仿它。

1.spring是什么?
a)轻量级
零配置编程、API使用简单
b)面向Bean
只需要编写非常普通的Bean
c)松耦合
充分利用AOP思想
d)万能胶
与主流框架无缝集成
e)设计模式
将Java中经典的设计模式运用得淋漓尽致

2.spring为什么存在?
四个字总结,简化开发
a)基于pojo的轻量级和最小侵入性编程
b)通过依赖注入和面向接口松耦合
c)基于切面和惯性进行声明式编程
d)通过切面和模板减少样板代码

3.控制反转IOC
a)解决什么问题?
最开始的对象初始化是new,但是如果一个对象依赖了另一个对象,那么初始化这件事就比较繁琐了
b)spring怎么解决?
spring可以把这一步操作接手过来,控制了对象的实例化,即控制权,那么反转了什么呢?顾名思义,Inversion of Control意思是反转了控制权,就是把控制权交给spring表示反转。
c)初始化之后对象放哪里呢?如果没地方放那么这个对象就找不到了
spring初始化对象之后把对象存放于IOC容器,就像杯子盛水,tomcat容器盛了servlet,IOC容器存放的是bean
d)IOC容器管理的bean怎么用?
IOC的目的就是为了依赖注入,没有依赖注入,容器里的bean还怎么用呢?

4.依赖注入DI
先有bean,然后Factory通过setter注入,如果对象之间有依赖关系会按依赖关系逐个注入
a)Bean
Java语言的基本元素
b)Bean Factory
BeanFactory是依赖注入的核心,主要封装了创建Bean的细节
c)注入
构造方法注入,getter、setter注入,直接赋值
d)依赖关系
Java中Bean与Bean之间的关系有很多种,有父子关系(继承),有包含关系(属性)

5.面向切面AOP
a)是一种思想,核心思想就是解耦,将影响多个类的行为封装到可重用的模块中。
b)比如事务,事务的流程有开启事务,执行事务,回滚事务,关闭事务4个操作,这种有规律的东西就是规则,我们就单独把这个具有一定规律的规则分离出来,作为一个单独模块,然后以声明的方式将他们应用到需要事务的组件上。
c)比如日志,在典型的开发方式中,哪里需要记录日志,那么哪里就调用一下日志记录的方法,业务与日志绑在一起了,如果多个方法需要,那么都要调用一下;但是在AOP方式中,可以反过来将日志模块化,并以声明的方式将他们应用到需要事务的组件上,优势就是业务代码无需考虑日志的存在,实现了松耦合。
d)应用
auth权限控制,errorHandle错误跟踪,cache缓存,懒加载,事务,日志。

6.总结

spring思想
应用场景(特点)
一句话归纳
AOP
1、Aspect oriented Programming(以切面为方向的编程)
2、找出多个类中具有一定规律的代码,开发时拆开,运行时合并
(开发时,代码是分离的,业务逻辑不知道它被代理了什么;
运行时,代理会把被代理的方法进行字节码重组,两个地方的代码
合并起来。)
3、面向切面编程,即面向规则编程。
(面向规则表示解耦出来的这部分代码具有一定的规则)
解耦,专人做专事
(解析:把一些通用的代码
封装即解耦;这些封装的代码
实现一定的功能)
OOP
1、Object oriented Programming(以对象为方向的编程)
2、归纳总结生活中的一些事物
封装、继承、多态
BOP
1、Bean oriented Programming(以bean为方向的编程)
2、面向Bean(普通java类)设计程序
一切从Bean开始
IOC
1、Inversion Of Control(把控制权反转)
2、将new的对象交给spring管理,并由spring保存已创建的对象
转交控制权
DI/DL
1、Dependency Injection/Dependency Lookup
2、依赖注入 依赖查找,spring不仅保存自己创建的对象,而且保
存对象与对象之间的关系( 注入之前肯定要先查找
3、注入即赋值,主要三种构造方法,set方法,之间赋值
(IOC不管依赖关系,比如一个ctrl里面注入多个service,IOC会
把这些对象全部new出来再说,但是ctrl的service是null,在读取
到注入的时候才会去查找依赖关系进行赋值)
先理清关系再赋值



公众号:左耳代码
博 客:https://blog.csdn.net/charJay_lin



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值