自学内容网 自学内容网

Spring 学习笔记

0、脑图

在这里插入图片描述



1、背景

1.1、框架

Spring ( Spring Framework ),framework 的含义是框架
提供了基本的结构规范
多个框架组合在一起就是架构(例如,SSM,SSM 框架是 Spring + Spring MVC + MyBatis 的组合,通常用于 Java Web 开发中。)


1.2、为什么要学习 Spring 框架

Spring 可以让每个人都能更快,更轻松,更安全的进行 Java 编程

Spring官网

在这里插入图片描述

在这里插入图片描述

Spring6 最低支持 JDK17
Spring5 最低支持 JDK8

本次学习笔记以 Spring6 为目标进行学习和总结



1.3、什么是 Spring

  • Spring 不等同于 Spring 框架
  • 从官网中可以看到所有 Spring 的产品(全家桶)
  • Spring 是 一个完整的生态体系,包括配置,安全,网络,大数据等等;可以帮助你构建一个应用中的所有基础设施

Spring官网
在这里插入图片描述


1.4、Java web 框架演变过程

使用 Spring 都是去开发 web 应用
web 应用开发框架的演变过程如下图所示:

在这里插入图片描述

  1. Servlet + JSP + JavaBean
    使用 Servlet 获取用户输入,去数据库查询,然后使用 JSP 返回成功/失败页面
    问题:逻辑复杂,可维护性太低

  2. MVC三层架构
    · web-跳转页面
    引入 MVC 的架构思想
    M model = pojo(User,参数封装成一个类)
    V-view(JSP,视图体现)
    C-(controller-servlet,servlet负责跳转到哪一个JSP)
    · service-业务逻辑判断
    · dao-数据库查询
    问题:类需要用户自己去创建(new),类和类/层和层之间耦合性太强

  3. EJB
    对象的创建交给容器自己去做

    问题:侵入式强,过多的接口和依赖;如果要实现某一个类,必须继承接口或者使用它的父类;实现起来太麻烦

  4. Struts1+Struts2 + Hibernate + Spring
    web-跳转页面 Struts
    service-业务逻辑判断
    dao-数据库查询 Hibernate
    层和层之间的依赖关系,用Spring去解决,new 对象的工作交给 Spring 去做
    SSH 架构
    问题:Struts 出现BUG,使用麻烦

  5. SpringMVC + Mybatis + Spring
    web-跳转页面 SpringMVC
    service-业务逻辑判断
    dao-数据库查询 MyBatis(处理复杂业务)
    SSM 架构
    问题:每一个项目都要重新搭建架构,需要大量 XML 配置文件

  6. SpringBoot 开发


1.5、Spring 框架介绍

Spring 框架英文全称是 Spring Framework

注意:Spring Framework 只是 Spring 全家桶中的一个框架,也是第一个框架
Spring Framework 并不是 Spring

目的:简化项目开发

官方介绍

提供的核心内容包括:

  • 依赖注入
  • 事务管理(对数据库的操作,要么全部成功,要么全部失败)
  • web 应用(Spring MVC)
  • 数据库访问
  • 消息
    在这里插入图片描述


2、特性

2.1、IOC/DI

IOC/DI 是属于 Spring 框架中核心模块里面的,它是 Spring Framework 的基础,也是最核心的部分
Spring Framework 所有其他模块,都是在 IOC/DI 基础上研发的

IOC:Inversion of Control 控制反转
DI:Dependency Injection 依赖注入
在这里插入图片描述


IOC
是指对象创建的权利

区别对比

  • 改造之前:由程序员控制对象创建:UserService(new UserDao()) --> UserDao;强耦合
  • 改造之后:依赖 Spring 注入(DI):Spring (new UserService(); new UserDao();)如果需要用到 Spring 管理的对象,则需要依赖 Spring 注入(DI)

IOC/DI 优点

  1. 解耦
  2. 统一管理了对象

2.1.1、IOC 的实现

在使用 Spring 之前,使用传统的方式,类和类之间耦合度过高
就算使用面向接口编程的方式,引入 IUserDao,依然耦合度过高
在这里插入图片描述

IOC 的实现方式包括三种

  1. spring 3以下 xml 配置方式实现(SSM)
  2. spring 3+以上的版本的实现方式
  3. SpringBoot 的方式实现

使用 xml 实现 Spring IOC

注意:
需要提前在 UserService 中创建 get 和 set 方法
Spring 是通过 get 和 set 方法去注入成员变量 userDao

在这里插入图片描述


在这里插入图片描述

测试依赖注入
在这里插入图片描述


遇到的问题

1、依赖注入时,xml 文件存在问题,出现如下报错 找不到元素 ‘beans’ 的声明

Caused by: org.xml.sax.SAXParseException; lineNumber: 4; columnNumber: 73; cvc-elt.1.a: 找不到元素 ‘beans’ 的声明。

【问题原因】
这个错误通常出现在使用Spring框架配置文件时,当解析XML文件时发现标签没有正确的声明或者相关的命名空间未被正确引用。

【问题解决】
1、确保 xml 头正确
<?xml version="1.0" encoding="UTF-8"?>

2、检查标签的命名空间声明:

<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">

原文地址:https://blog.csdn.net/qq_39748832/article/details/143989030

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!