Spring是一个支持快速开发Java EE应用程序的框架。
Spring Framework主要包括几个模块:
- 支持IoC和AOP的容器;
- 支持JDBC和ORM的数据访问模块;
- 支持声明式事务的模块;
- 支持基于Servlet的MVC开发;
- 支持基于Reactive的Web开发;
- 以及集成JMS、JavaMail、JMX、缓存等其他模块。
IoC容器
容器是一种为某种特定组件的运行提供必要支持的一个软件环境。例如,Tomcat就是一个Servlet容器,它可以为Servlet的运行提供运行环境。类似Docker这样的软件也是一个容器,它提供了必要的Linux环境以便运行一个特定的Linux进程。
Spring的核心就是提供了一个IoC容器,它可以管理所有轻量级的JavaBean组件,提供的底层服务包括组件的生命周期管理、配置和组装服务、AOP支持,以及建立在AOP基础上的声明式事务服务等。
IoC原理
IoC全称Inversion of Control,直译为控制反转。
在IoC模式下,控制权发生了反转,即从应用程序转移到了IoC容器,所有组件不再由应用程序自己创建和配置,而是由IoC容器负责,应用程序只需要直接使用已经创建好并且配置好的组件。
为了能让组件在IoC容器中被“装配”出来,需要某种“注入”机制。
IoC又称为依赖注入(DI:Dependency Injection),它解决了一个最主要的问题:将组件的创建+配置与组件的使用相分离,并且,由IoC容器负责管理组件的生命周期。
因为IoC容器要负责实例化所有的组件,因此,有必要告诉容器如何创建组件,以及各组件的依赖关系。一种最简单的配置是通过XML文件来实现,例如:
1 | <beans> |
上述XML配置文件指示IoC容器创建3个JavaBean组件,并把id为dataSource
的组件通过属性dataSource
(即调用setDataSource()
方法)注入到另外两个组件中。
在Spring的IoC容器中,我们把所有组件统称为JavaBean,即配置一个组件就是配置一个Bean。
依赖注入方式
Spring的IoC容器同时支持属性注入和构造方法注入,并允许混合使用。
装配Bean
一个具体的用户注册登录的例子。整个工程的结构如下:
1 | spring-ioc-appcontext |
第一,用Maven创建工程并引入spring-context
依赖:
1 | <project xmlns="http://maven.apache.org/POM/4.0.0" |
第二,先编写一个MailService
,用于在用户登录和注册成功后发送邮件通知:
1 | public class MailService { |
第三,再编写一个UserService
,实现用户注册和登录:
1 | public class UserService { |
UserService
通过setMailService()
注入了一个MailService
。
第四,需要编写一个特定的application.xml
配置文件,告诉Spring的IoC容器应该如何创建并组装Bean:
1 |
|
Spring容器是通过读取XML文件后使用反射完成的。
发布时间: 2020-05-01
最后更新: 2020-05-02
本文链接: https://juoyo.github.io/posts/464a2ba4.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!