【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 条评论)