【Spring 学习笔记 (一)】第一个 Spring 程序与 IoC 思想

写在前面😘
大一电子信息工程新生,请多多关照,希望能在 InfoQ 写作·社区记录自己的学习历程!
【Spring 学习笔记】 系列教程基于
Spring 5.2.10.RELEASE讲解 ,部分图片来源于网络,侵权删。
一、Spring 相关概念
1、Spring 发展史
Spring 是 Java EE 编程领域的一款轻量级的开源框架,由Spring 之父Rod Johnson 于 2002 年提出并创立,它的目标就是要替换以 EJB 为核心的开发方式(EJB 的诟病:使用复杂、代码臃肿、代码侵入性强、开发周期长、移植难度大等),简化开发。所以 Spring 的出现又被喻为程序员的春天,哈哈😁
光看发型就知道是大佬了,大佬不仅获得过计算机学位,同时还获得了音乐学的博士学位🤣
之后 Spring 不断发展,2004 年,Spring 1.0 版本正式发布。2017 年,Spring 步入到了第 5 个大版本,也就是我们常说的 Spring 5,本教程就是基于Spring 5.2.10.RELEASE讲解。
2、Spring 大家族
2.1 狭义的 Spring
狭义上的 Spring 通常指 Spring Framework,即
Spring 框架,本教程主要讲解的就是Spring 5.0框架
Spring 框架体系结构图
2.2 广义的 Spring
广义上的 Spring 泛指以 Spring Framework 为核心的 Spring 技术栈。如:
Spring Framework、SpringBoot和SpringCloud
经过十多年的发展,Spring 已经不再是一个单纯的应用框架,已经形成了一种开发的生态圈,Spring 有若干个项目可以使用
3、Spring 核心思想
Spring 核心是控制反转(IoC)和面向切面编程(AOP)
IoC 和 AOP 也是本系列教程主要讲解的内容
4、Spring 优点
方便解耦,简化开发
对象的创建和依赖关系的维护交给 Spring 工厂管理
方便集成各种优秀技术
表现层(web):Spring MVC、Struts2 等框架的整合
业务逻辑层(service):提供管理事务和记录日志的功能
持久层(dao):MyBatis、Hibernate 和 JdbcTemplate 等技术的整合
支持面向切面(AOP)编程
实现权限拦截和运行监控等功能
其他功能
声明式事务:通过配置就可以完成对事务的管理
程序测试:Spring 支持 JUnit 单元测试
二、第一个 Spring 程序
1、创建 Maven 项目
2、添加 Spring 的依赖 jar 包
在 pom.xml 文件中导入
spring 5.2.10的坐标
3、创建 Java 类
HelloSpring.java 类代码如下
4、创建 spring 配置文件
在 resources 下添加 spring 配置文件
applicationContext.xml,当然你叫别的名字也可以。
applicationContext.xml用于给不同的 Bean 分配唯一的 ID,并给相应的 Bean 属性赋值。例如,在以下代码中,我们可以在不影响其它类的情况下,给 message 变量赋值。
5、编写主方法
App.java 类代码如下
ClassPathXmlApplicationContext类用于加载 Spring 配置文件、创建和初始化所有对象(Bean)。ApplicationContext类的getBean()方法用来获取 Bean,该方法返回值类型为 Object,通过强制类型转换为 HelloSpring 的实例对象,调用其中的 getMessage() 方法。
运行结果
三、IoC 控制反转
1、IoC 思想简介
控制反转(IoC,Inversion of Control),是一种设计思想。
传统方式上,对象的创建是由由程序代码直接操控的;而 IoC 思想提倡将对象调用权交给容器,通过容器来实现对象的装配和管理。
2、Spring 和 IoC 的关系
Spring 技术对 IoC 思想进行了实现,Spring 提供了一个容器,称为 IoC 容器
IoC 容器负责对象的创建、初始化等一系列工作,被创建或被管理的对象在 IoC 容器中统称为 Spring Bean
Spring IoC 容器使用了反射机制创建对象
3、DI 依赖注入
依赖注入(DI,Dependency Injection),是 IoC 的技术实现,也有人说是 IoC 的另一种称呼。
依赖关系:面向对象编程中,对象之间通常存在一种依赖关系,即对象的一个属性是另外一个类的对象。如 service 层的对象需要依赖 dao 层的对象。
Spring IoC 容器在对象创建过程中, 会自动根据依赖关系,将它依赖的对象注入到当前对象中,这就是所谓的“依赖注入”。
依赖注入本质上是 Spring Bean 属性注入的一种,只不过这个属性是一个对象属性而已。
4、IoC 容器的两种类型
Spring 框架为我们提供了两种不同类型 IoC 容器,分别是 BeanFactory 和 ApplicationContext。
在 BeanFactory 类中按
Ctrl+H可查看层次结构
BeanFactory
BeanFactory 是所有容器的根接口,也是 Spring 提供的最简单的 IoC 容器,它提供了配置框架和基本方法
注意: BeanFactory 默认采用懒加载(lazy-load)机制
ApplicationContext
ApplicationContext 是 BeanFactory 接口的子接口,是对 BeanFactory 的扩展。
ApplicationContext 添加了更多的企业特定的功能,所以通常用它代替 BeanFactory
ApplicationContext 接口有两个常用的实现类,如下表👇
写在后面🍻
感谢观看啦✨
有什么不足,欢迎指出哦💖
版权声明: 本文为 InfoQ 作者【倔强的牛角】的原创文章。
原文链接:【http://xie.infoq.cn/article/0055d018f92049ee1689013e8】。文章转载请联系作者。










评论 (1 条评论)