Spring入门
1 Spring简介
1.1 什么是框架
- 源自于建筑学,隶属土木工程,后发展到软件工程领域
- 软件工程框架:经过验证的,具有一定功能的,半成品软件
- 经过验证
- 具有一定功能
- 半成品
1.2 框架的作用
1.3 Spring是什么
Spring是分层的JavaSE/EE应用full-stack轻量级开源框架
1.4 Spring的体系结构
1.5 Spring的发展历史
1.6 Spring容器概念(简单来说就是MAP)
Spring提供了两种容器类型:BeanFactory和ApplicationContext。简单说就是存储id和实现类的键值对来解耦操作.
BeanFactory是基础类型IoC容器,提供完整的IoC服务支持。
如果没有特殊指定,默认采用延迟初始化策略(lazy-load)只有当客户端对象需要访问容器中的某个受管对象的时候,才对该受管对象进行初始化以及依赖注入操作。所以,相对来说,容器启动初期速度较快,所需要的资源有限资源有限,并且功能要求不是很严格的场景,BeanFactory是比较合适的 IoC容器选择
ApplicationContext。ApplicationContext在BeanFactory的基础上构建,是相对比较高 级的容器实现,除了拥有BeanFactory的所有支持,ApplicationContext还提供了其他高级,比如事件发布、国际化信息支持等,。ApplicationContext所管理 的对象,在该类型容器启动之后,默认全部初始化并绑定完成。所以,相对于BeanFactory来说,ApplicationContext要求更多的系统资源,同时,因为在启动时就完成所有初始化,容 器启动时间较之BeanFactory也会长一些。在那些系统资源充足,并且要求更多功能的场景中, ApplicationContext类型的容器是比较合适的选择
2 IoC简介
2.1 优质程序代码的制作原则
2.2 耦合与内聚
- 耦合(Coupling):代码书写过程中所使用技术的结合紧密度,用于衡量软件中各个模块之间的互联程度
- 内聚(Cohesion):代码书写过程中单个模块内部各组成部分间的联系,用于衡量软件中各个功能模块内部的功能联系
- 程序书写的目标:高内聚,低耦合
- 就是同一个模块内的各个元素之间要高度紧密,但是各个模块之间的相互依存度却不要那么紧密
2.3 工厂模式发展史
2.4 Spring发展历程
2.5 IoC
- IoC(Inversion Of Control)控制反转,Spring反向控制应用程序所需要使用的外部资源,用于给对象赋予实现类
- Spring控制的资源全部放置在Spring容器中,该容器称为IoC容器
3 入门案例
3.1 案例环境说明
- 模拟三层架构中表现层调用业务层功能
- 表现层:UserApp模拟UserServlet(使用main方法模拟)
- 业务层:UserService
3.2)IoC入门案例制作步骤
1.导入spring坐标(5.1.9.release)
2.编写业务层与表现层(模拟)接口与实现类
3.建立spring配置文件
4.配置所需资源(Service)为spring控制的资源
5.表现层(App)通过spring获取资源(Service实例)
3.2.1 IoC入门案例制作步骤-1
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.1.9.RELEASE</version> </dependency>
3.2.2 IoC入门案例制作步骤-2
public interface UserService { //业务方法 void save(); }
3.2.3 IoC入门案例制作步骤-3
public class UserServiceImpl implements UserService { public void save() { System.out.println("user service running..."); } }
3.2.4 IoC入门案例制作步骤-4
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 1.创建spring控制的资源--> <bean id="userService" class="com.itoldlu.service.impl.UserServiceImpl"/> </beans>
3.2.5 IoC入门案例制作步骤-5
public class UserApp { public static void main(String[] args) { //2.加载配置文件 ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); //3.获取资源 UserService userService = (UserService) ctx.getBean("userService"); userService.save(); } }