spring学习总结(一)_Ioc基础(上)

阅读目录

  • spring概述
  • Ioc基础
  • 使用XML配置方式实现IOC

最近经历了许许多多的事情,学习荒废了很久。自己的目标成了摆设。现在要奋起直追了。最近发现了张果的博客。应该是一个教师。看了他写的spring系列的博客,写的不错。于是本文的内容参考自他的博客,当然都是手打书写。由于我感觉他写的博客篇幅过长。我根据我的习惯进行拆分学习。而且他的文章一系列很清楚。也值得我去学习。自己写博客就零零散散。不是很系统。

spring概述

spring可以做很多事情,它为企业级开发提供了丰富的功能。但是这些功能的底层都依赖于它的两个核心特性,控制反转(IOC)和面向切面(AOP)、本篇文章主要介绍IOC。

现在 springboot 和spring cloud十分火爆,还是有必要看看两者之间的关系的

Spring Boot 是 Spring 的一套快速配置脚手架,可以基于Spring Boot 快速开发单个微服务,Spring Cloud是一个基于Spring Boot实现的云应用开发工具;Spring Boot专注于快速、方便集成的单个微服务个体,Spring Cloud关注全局的服务治理框架;Spring Boot使用了约束优于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置,Spring Cloud很大的一部分是基于Spring Boot来实现,Spring Boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开Spring Boot,属于依赖的关系。

spring学习总结(一)_Ioc基础(上)

Ioc基础

控制反转IOC是一种设计思想,DI(依赖注入)是实现IOC的一种方法。(下面的这张图画的太好了)
spring学习总结(一)_Ioc基础(上)

  • 没有IOC的程序中我们使用面向对象编程对象的创建于对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制。
  • 控制反转后将对象的创建转移给第三方。
    IOC是spring框架的核心内容,使用多种方式完美的实现了IOC,可以使用xml配置,也可以使用注解,新版本的spring可以零配置实现IOC。

使用XML配置方式实现IOC

  • 创建maven项目

  • pom文件如下
    spring学习总结(一)_Ioc基础(上)
    spring学习总结(一)_Ioc基础(上)
    使用无参构造方法创建对象

    新建一个Music类
    spring学习总结(一)_Ioc基础(上)

    resources文件夹下新建music.xml
    spring学习总结(一)_Ioc基础(上)

    测试类

    spring学习总结(一)_Ioc基础(上)
    运行结果
    spring学习总结(一)_Ioc基础(上)

使用有参构造方法创建对象

Person

spring学习总结(一)_Ioc基础(上)
Student

spring学习总结(一)_Ioc基础(上)

student.xml
spring学习总结(一)_Ioc基础(上)

测试类
spring学习总结(一)_Ioc基础(上)

输出
spring学习总结(一)_Ioc基础(上)

通过属性赋值

Animal

spring学习总结(一)_Ioc基础(上)
spring学习总结(一)_Ioc基础(上)
animal.xml

spring学习总结(一)_Ioc基础(上)
测试
spring学习总结(一)_Ioc基础(上)

输出结果

spring学习总结(一)_Ioc基础(上)
对象引用

Tyre
spring学习总结(一)_Ioc基础(上)
spring学习总结(一)_Ioc基础(上)

Car

spring学习总结(一)_Ioc基础(上)
spring学习总结(一)_Ioc基础(上)
测试
spring学习总结(一)_Ioc基础(上)

输出结果
spring学习总结(一)_Ioc基础(上)

对象作用域

在大多数情况下,单例bean是很理想的方案。初始化和垃圾回收对象实例所带来的的成本只留给一些小规模任务,在这些任务中,让对象保持无状态并且在应用中反复重用这些对象可能并不合理。在这种情况下,将class声明为单例的bean会被污染,稍后重用的时候会出现意想不到的问题。
-《spring实战》

Spring定义了多种作用域,可以基于这些作用域创建bean,包括:

spring学习总结(一)_Ioc基础(上)
1、spring中默认是单例的,我们通过之前的代码演示下

测试

spring学习总结(一)_Ioc基础(上)
输出结果:true

这样验证了从容器中取回的对象默认是单例的。

2、设置成Prototype

spring学习总结(一)_Ioc基础(上)

测试

spring学习总结(一)_Ioc基础(上)
输出结果:false

延迟初始化bean

ApplicationContext实现的默认行为是在启动时将所有的singleton bean 提前进行实例化。这样配置中或者运行环境的错误就会立刻发现。如果你想延迟初始化。可以在xml中进行配置
spring学习总结(一)_Ioc基础(上)

测试
spring学习总结(一)_Ioc基础(上)

大家自己运行后发现,确实并不是启动后就加载的。

回调方法

Student
spring学习总结(一)_Ioc基础(上)

student.xml
spring学习总结(一)_Ioc基础(上)

测试方法

spring学习总结(一)_Ioc基础(上)
输出结果
spring学习总结(一)_Ioc基础(上)

这是在网上看到一个博主写的,觉得不错拉出了。(添加链接描述)博主地址。