Spring框架
- Spring 简介 (https://spring.io)
Spring是一个开源的轻量级的容器框架。 Spring之父:Rod Johnson 设计宗旨:不发明新的技术,让现有技术使用更方便。 Spring Framework(Spring框架)是一个开源的应用程序框架,由SpringSource公司开发,最初是为了解决企业级开发中各种常见问题而创建的。它提供了很多功能,例如:依赖注入(Dependency Injection)、面向切面编程(AOP)、声明式事务管理(TX)等。其主要目标是使企业级应用程序的开发变得更加简单和快速,并且Spring框架被广泛应用于Java企业开发领域。 |
- Spring 体系架构
- Spring核心功能
IOC/DI : 控制反转/依赖注入 AOP :面向切面编程 TX:声明式事务 |
- IOC
IOC: Inversion of Control 控制反转 概念:原先由程序员通过new关键字创建对象事情,转交给Spring负责。 控制反转中控制:控制类的对象 控制反转中反转:转交给Spring 作用:解耦合 解除了程序员和对象管理之间的耦合。 IoC 主要是针对对象的创建和调用控制而言的,也就是说,当应用程序需要使用一个对象时,不再是应用程序直接创建该对象,而是由 IoC 容器来创建和管理,即控制权由应用程序转移到 IoC 容器中,也就是“反转”了控制权。这种方式基本上是通过依赖查找的方式来实现的,即 IoC 容器维护着构成应用程序的对象,并负责创建这些对象。 |
- SpringIoC容器介绍
Spring IoC 容器,负责实例化、配置和组装 bean(组件)。容器通过读取配置元数据来获取有关要实例化、配置和组装组件的指令。配置元数据以 XML、Java 注解或 Java 代码形式表现。它允许表达组成应用程序的组件以及这些组件之间丰富的相互依赖关系。 **SpringIoc容器接口**: `BeanFactory` 接口提供了一种高级配置机制,能够管理任何类型的对象,它是SpringIoC容器标准化超接口! `ApplicationContext` 是 `BeanFactory` 的子接口。它扩展了以下功能: - 更容易与 Spring 的 AOP 功能集成 - 消息资源处理(用于国际化) - 特定于应用程序给予此接口实现,例如Web 应用程序的 `WebApplicationContext` ApplicationContext容器实现类: |
- Spring框架提供了多种配置方式:XML配置方式、注解方式和Java配置类方式
3. **Java配置类**方式:从Spring 3.0版本开始提供支持,通过Java类来定义Bean、Bean之间的依赖关系和配置信息,从而代替XML配置文件的方式。Java配置类是一种使用Java编写配置信息的方式,通过@Configuration、@Bean等注解来实现Bean和依赖关系的配置。 为了迎合当下开发环境,我们将以**配置类+注解方式**为主进行讲解! |
- Spring 项目环境搭建 (java项目/web项目)
7.1采用maven创建java项目,导入spring的坐标
<!--当你引入Spring Context依赖之后,表示将Spring的基础依赖引入了--> <!--lombok --> 注意:引入日志配置文件logback.xml 到 resources目录下 |
7.2 创建spring配置文件
resources-->new-->XML Configuration File-->
spring config-->applicationContext.xml (自定义)
<?xml version="1.0" encoding="UTF-8"?> |
7.3 创建实体类
@Data |
7.4 配置文件配置<bean>对象标签
<!-- |
7.5 单元测试
@Test //加载spring配置文件,返回spring容器 ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml"); //从spring容器中获取对象 Student stu=ac.getBean("stu",Student.class); System.out.println(stu); } } |
总结:
1.默认配置文件加载时,调用无参构造创建对象,并交给SpringIOC容器管理。 2.设置延迟初始化对象创建 属性:<bean lazy-init="true" > 一个bean对象有效 <beans default-lazy-init="true"> 所有bean有效
属性: <bean scope="singleton"> 单例模式 <bean scope="prototype"> 多例模式 |
- Spring创建bean实例化三种方式
- 构造方法实例化
必须提供无参构造方法 <bean id="stu" class="pojo.Student"></bean> |
-
- 实例工厂实例化bean
- 编写工厂类和创建实例对象的方法
public class StudentFactory { public Student createStudent() { return new Student(); } } |
- 配置文件
<!--实例工厂创建bean--> <bean id="studentFactory" class="util.StudentFactory"></bean> <bean id="stu3" factory-bean="studentFactory" factory-method="createStudent"></bean> |
-
- 静态工厂实例化bean
1.编写静态工厂类和创建实例对象的静态方法
public class StudentStaticFactory { public static Student createStudent() { return new Student(); } } |
2.配置文件
<!--静态工厂创建bean--> <bean id="stu4" class="util.StudentStaticFactory" factory-method="createStudent"></bean> |