spring全面详解-最全最详细的spring基本认识和入门使用

文章目录

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正式版本。

在这里插入图片描述

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 构建工程
2.1 构建子工程first-spring

在jsd2303-spring中创建子工程 spring-first

  1. New - Module

    在这里插入图片描述

  2. 点击 Next

    在这里插入图片描述

  3. Name为spring-first,点击 Finish

    在这里插入图片描述

2.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.tedu.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.tedu.spring.User"></bean>
    
</beans>

⑦ 创建测试类cn.tedu.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();
    }
}
2.3 对象存储

存放到容器中,查看源码,DefaultListableBeanFactory.java,第164行

在这里插入图片描述

key:唯一标识

value:类的定义(描述信息)

可以查看 BeanDefinition 的源码,有类的描述信息,是否初始化的状态等等

IoC容器

IoC 是 Inversion of Control 的简写,译为 控制反转。

Spring通过IoC容器来管理所有的Java对象的实例化和初始化,控制着对象与对象之间的依赖关系。我们将由IoC容器管理的Java对象成为 Spring Bean,它与使用关键字 new 创建的Java对象没有任何区别。

IoC容器是Spring框架中最重要的核心组件之一,它贯穿了Spring从诞生到成长的整个过程。

1 控制反转IoC
  • 控制反转是一种思想

    • 将对象的创建权利交出去,交给第三方容器负责
    • 将对象和对象之间的关系维护权交出去,交给第三方容器负责
  • 如何实现

    通过依赖注入DI的方式实现

2 依赖注入DI

DI (Dependency Injection):依赖注入,依赖注入实现了控制反转的思想,是指Spring创建对象的过程中,将对象依赖属性通过配置进行注入。

依赖注入常见的实现方式有两种:

  1. set注入
  2. 构造注入

所以 IoC 是一种控制反转的思想,而 DI 是对IoC的一种具体实现。

Bean管理:指Bean对象的创建,以及Bean对象中属性的赋值(或Bean对象之间关系的维护)

3 IoC容器实现

Spring中的IoC容器就是IoC思想的一个落地产品实现。IoC容器中管理的组件也叫做bean。在创建bean之前,首先需要创建IoC容器,Spring提供了IoC容器的两种实现方式

① BeanFactory

这是IoC容器的基本实现,是Spring内部使用的接口。面向Spring本身,不提供给开发人员使用。

② ApplicationContext

BeanFactory的子接口,提供了更多高级特性,面向Spring的使用者,几乎所有场合都使用 ApplicationContext,而不是底层的BeanFactory

源码说明:

在这里插入图片描述

③ ApplicationContext的主要实现类

类型

说明

ClassPathXmlApplicationContext

通过读取类路径下的xml格式配置文件创建IoC容器对象

FileSystemApplicationContext

通过文件系统路径读取xml格式配置文件创建IoC容器对象

4 基于XML管理bean
4.1 环境准备

① 创建子工程 spring-ioc-xml

在这里插入图片描述

② pom.xml中引入spring依赖,并刷新maven

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.24</version>
    </dependency>
</dependencies>

③ 创建spring配置文件:resources/bean.xml

在这里插入图片描述

④ 在工程目录java下创建类 cn.tedu.spring.iocxml.User

public class User {
    private String username;
    private String password;
    
    public void userMethod(){
        System.out.println("userMethod执行~~");
    }
}
4.2 获取bean方式
  • 根据id获取

    id属性是bean的唯一标识,所以根据bean标签的id属性可以精确获取到一个组件对象。

    ① bean.xml

    <bean id="user" class="cn.tedu.spring.iocxml.User"></bean>
    

    ② 创建测试类UserTest

    public class UserTest {
    
        public static void main(String[] args) {
            // 1.加载配置文件
            ApplicationContext context = new ClassPathXmlApplicationContext("be
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值