Spring
spring概述
1.Spring定义
-
Spring是一款主流的Java EE 轻量级开源框架,目的是用于简化Java企业级引用的开发难度和开发周期。从简单性、可测试性和松耦合度的角度而言,任何Java应用都可以从Spring中受益。Spring框架提供自己提供功能外,还提供整合其他技术和框架的能力。
-
Spring自诞生以来备受青睐,一直被广大开发人员作为Java企业级应用程序开发的首选。时至今日,Spring俨然成为了Java EE的代名词,成为了构建Java EE 应用的事实标准。
-
自2004年4月,Spring1.0 版正式发布以来,Spring已经步入到了第6个大版本,即 Spring6,本课程采用Spring5.3.24正式版本。Spring6版本支持JDK17
2 Spring核心
-
Spring指的是Spring Framework,通常我们称之为Spring框架。Spring框架是一个分层的面向切面的Java应用程序的一站式解决框架,它是Spring技术栈的核心和基础,是为了解决企业级引用开发的复杂性而创建的。
-
Spring有两个核心模块:IoC和AOP。
-
Ioc:Inverse of Control的简写,为 控制反转,指把创建对象交给Spring进行管理。
-
AOP:Aspect Oriented Programming 的简写,为 面向对象编程。AOP用来封装多个类的公共行为,将那些与业务无关,却为业务模块共同调用的逻辑封装起来,减少系统的重复代码,降低模块间的耦合度。另外,AOP还解决一些系统层面上的问题,比如日志、事务、权限等。
3 Spring Framework的特点
- 控制反转:IoC,反转资源获取方向;把自己创建的资源、向环境索取资源变为环境将资源准备好,我们享受资源注入。
- 面向切面编程:AOP,在不修改源代码的基础上增强代码功能。
- 容器:Spring IoC是一个容器,因为它包含并管理组件对象的生命周期;组件享受到了容器化的管理,替程序员屏蔽了组件创建过程中的大量细节,极大降低了使用门槛,大幅度提高了开发效率。
- 一站式:在IOC和AOP的基础上可以整合各种企业应用的开源框架和优秀的第三方库,而且在Spring旗下的项目已经覆盖了广泛领域,很多方面的功能性需求可以在Spring Framework 的基础上全部使用Spring来实现。
入门案例
1 环境要求
- JDK:Java8-15
- Spring:5.3.24
2入门案例
① 在spring-first/pom.xml中引入相关依赖,并 刷新maven
<dependencies>
<!-- spring context依赖
当引入此依赖后,表示将Spring的基础依赖引入了
-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.24</version>
</dependency>
</dependencies>
② 在工程中创建包 cn.spring.begin
③ 创建类 User
④ User类中定义方法
public class User {
public void add(){
System.out.println("添加方法...");
}
}
⑤ 创建spring配置文件:resources目录下创建bean.xml
⑥ 在bean.xml中用标签完成对象创建
<?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 http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--完成user对象创建
id属性:唯一标识
class属性:要创建的对象所在类的绝对路径
-->
<bean id="user" class="cn.spring.User"></bean>
</beans>
⑦ 创建测试类cn.spring.TestUser进行测试
public class TestUser {
public static void main(String[] args) {
// 1.加载spring配置文件,进行对象创建
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
// 2.获取spring创建好的对象
User user = (User) context.getBean("user");
// 3.使用对象调用方法测试
System.out.println("user = " + user);
user.add();
}
}
3.对象存储
存放到容器中,查看源码,DefaultListableBeanFactory.java,第164行
key:唯一标识
value:类的定义(描述信息)
可以查看 BeanDefinition 的源码,有类的描述信息,是否初始化的状态等等