Spring 的学习总结


J2SE   java 基础
J2EE   java企业级开发
J2ME  移动端开发
1. Spring  是针对bean的生命周期进行管理的轻量级容器
2. bean :  Spring容器管理的对象称之为bean 
3. 生命周期: 对象创建/对象的初始化/对象执行业务逻辑/对象销毁
4. 轻量级容器:Spring在内存中申请了一块内存空间,用来存储其他对象
一. Spring-IOC  Spring-xml
二. Spring 注解开发
组成部分
1.实体类:Spring容器管理的类(对象)
2.配置类(配置文件):相当于早期的xml中的配置文件
3.

三.Spring 中的单例-多例模式
单例模式:内存中的对象就一份   输出地址不一样,无参构造会执行三次
多例模式:内存中的对象有多份   默认是单例所以不写 输出地址一次,无参构造执行一次
概念说明:Spring 中默认是单例模式 
四. Spring 中懒加载策略
    默认条件下,Spring容器启动,则会创建对象。(类比:饿汉式)。
 如果开启了懒加载,则用户什么时候使用,则对象什么时候创建(类比:懒汉式)
五.Spring生命周期

六. 注解总结
@ComponentScan(地址) 包扫描 ,扫描注解
@Configuration    标识当前的类是配置类
@PostConstruct  初始化方法
@PreDestroy    销毁方法
@Bean   标识该方法的返回值交给spring容器管理
@Scope 控制多例和单例
@Lazy   懒加载
@Autowired  按照类型进行注入
@Qualifier  按照名称进行注入
@Compoment  反射对象并交给spring容器管理
@Repository  标识持久层注解
@Service  标记Service层 业务层
@Controller  标记Controller层
@Value  动态赋值  $ 动态取值的规范
@Override   伪代码 表示重写
@PropertySource  加载指定路经下的字符文件

七.Spring 的依赖注入

八. MVC    设计思想
M: Model  数据层
V:View     视图层
C:Control   控制层
总结:降低耦合性,提高扩展性
九 .  ”三层“代码结构
说明:基于MVC设计思想的启发,在后端为了提高代码的扩展性,一般将代码分为三层。
分层:1.Controller层  主要与页面进行交互
2.Service  主要实现后端的业务逻辑
3.Dao层/Mapper层 主要与数据库进行交互,也把该层称之为”持久层“

包名:Mapper 类2 个 一个接口UserMapper/一个实现类UserMapperimpl
包名:Service 类2个 一个接口UserService/一个实现类UserServiceimpl
包名:Controller  一个类:UserController
知识说明:被调用的一般会有接口和实现类   

关于IOC-DI
什么是 IOC:控制反转,将对象交给Spring容器管理,由容器管理对象的生命周期
什么时候DI:依赖注入,为当前对象注入属性(属性也是对象).  
扩展问题:如果采用配置文件xml的方式进行注入,则注入的方式有多种,1.set注入
2.构造方法注入  3.工厂模式注入
总结:使用IOC-DI 的作用: 可以极大程度上实现代码的松耦合.(创建对象的解耦)
十.JDK动态代理
要求:必须要有接口或者实现类
十一.CGLib 动态代理
历史原因:JDK动态代理要求必须"有接口",但是某些类它没有接口,则没法使用JDK代理生成代理对象,所以为了填补知识的空缺,引入CGLib代理.

问题说明:cglib动态代理,要求有无接口都可以创建代理的对象.问题在于如何保证和被代理者相同(看起来相似),要求cglib动态代理继承被代理者,#代理对象时被代理者的子类#


动态代理的作用:
说明1:一般我们将业务中的耦合性高的代码,采用动态代理的方式进行解耦,使得程序更加具有扩展性.(业务逻辑的解耦)
说明2: Spring专门针对动态代理的规则,封装了一套API起名AOP

十二.AOP (OOP是面向对象)是面向切面
1.AOP主要作用: 在不修改原有代码的条件下 对方法进行扩展
2.AOP专业术语
1).连接点: 用户可以被扩展的方法
2).切入点: 用户实际扩展的方法
3).通知: 扩展方法的具体实现
4).切面: 将通知应用到切入点的过程


面向切面编程:将扩展的方法在切面中进行定义封装,不需要修改源码,对方法进行扩展,并且切面可以有多个!
3.AOP形象化的比喻
说明:AOP是一种抽象的一种概念,看不见摸不着,所以需要大家对概念有自己的认知。
4.注解的解读
@Target(ElementType.METHOD)          //注解对方法有效
@Retention(RetentionPolicy.RUNTIME) //运行期有效
public @interface cgb2110 {        //注解起到了标记作用
5.环绕通知方法:
特点:1.方法执行前后,通知都要执行
          2. 环绕通知可以控制目标方法是否执行
          3.环绕通知必须添加返回值
proceed() 
   作用1 :如果有下一个通知,则执行下一个通知
   作用2 :如果没有下一个通知,则执行目标方法

Spring中的通知总结
第一类:记录程序的运行状态
1.前置通知
2.后置通知:记录目标方法的返回值
3.异常通知:记录目标方法执行之后,抛出的异常信息
4.最终通知:记录程序最后的状态
第二类:
5.环绕通知 :作用:控制目标方法是否执行
环绕通知时未来使用最多的,功能最强大的

Spring 总结
Spring的作用 :Spring 可以整合其他的第三方的框架!从架构的角度,实现了代码的松耦合!
1.Spring-IOC-DI  IOC控制反转/数据结构Map集合<id,反射实例化对象>
俩种写法:xml写法,注解写法
DI:依赖注入,为当前对象注入属性(属性也是对象).  类型注入/名称注入
2.Spring-AOP  在不修改源码的条件下对方法进行扩展
3.动态代理    JDK动态/CGlib动态代理 method.invoke()  底层方法
4.切面 = 切入点表达式+通知方法
5.AOP中因为切面较多,每个切面都完成特定的功能,所以一般不会研究顺序@Order注解可以控制顺序。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值