SpringBoot——核心概念

server/2024/12/29 6:58:52/

文章目录

  • 一.核心概念
    • IoC/DI思想2.Ioc容器3.Bean
  • 二.IoC入门案例
  • 三.DI入门案例分析
  • 四.bean基础配置
  • 五.bean的实例化(创建)
  • 六.bean实例化——静态工厂
  • 七.bean实例化——示例工程与FactoryBean
  • 八.bean的生命周期
  • 九.依赖注入的两种方式
  • 十.构造器注入
  • 十一.依赖自动装配
  • 十二.集合注入
  • 十三.案例:数据源对象管理
  • 十三.加载properties文件
  • 十四.容器
  • 十五.核心容器总结
  • 十六.注解开发
  • 十七.纯注解开发
  • 十八.bean的管理
  • 十九.依赖注入
  • 二十.第三方bean管理
  • 二十一.第三方bean依赖注入
  • 二十二.注解开发总结
  • 二十三.Spring整合MyBatis
  • 二十四.Spring整合JUnit
  • 二十五.AOP简介
  • 二十六.AOP的入门案例
  • 二十七.AOP工作流程
  • 二十八.AOP切入点表达式
  • 二十九.AOP通知类型
  • 三十.AOP总结
  • 三十一.SpringMVC简介
  • 三十二.SpringMVC入门案例
  • 三十三.入门案例工作流程
  • 三十四.bean加载控制
  • 三十五.PostMan工具介绍
  • 三十六.设置请求映射路径
  • 三十七.get请求和post请求发送普通参数
  • 三十八.5种类型参数传递
  • 三十九.json数据传递参数

一.核心概念

IoC/DI思想2.Ioc容器3.Bean

  1. 代码书写现状
    在这里插入图片描述
    若数据层实现想换一套

在这里插入图片描述
需要换BookDaoImpl,但一换有成本。

  • 由于在类里面写了其他的实现,导致代码耦合度偏高,需要低耦合,直接不写,就没有太高耦合度,只剩接口,但是程序不能运行,直接给对象在这里插入图片描述

  • 解决:使用对象时,在程序中不要主动使用new产生对象,转换由外部提供对象

  • IoC(Inversion of Control)控制反转

  • 对象的创建控制权由程序转移到外部,这种思想为控制反转

  • 只为解耦

  • Spring技术对IoC思想进行了实现

  • Spring提供了一个容器,成为IoC容器,用来充当IoC思想中的“外部”。

  • IoC容器负责对象的创建,被创建或被管理的对象在IoC容器中统称为Bean

  1. DI(Dependency Injection)依赖注入在这里插入图片描述
  2. 目标:充分解耦
  • 使用IoC容器管理Bean
  • 在IoC容器内将有依赖关系的Bean进行关系绑定(DI)
  1. 最终效果
  • 使用对象时不仅可以直接从IoC容器中获取,并且获取到的Bean已经绑定了所有的依赖关系

二.IoC入门案例

  1. 管理什么?(Serivice与Dao)
  2. 如何将被管理的对象告知IoC容器?(配置)
  3. 被管理的对象交给IoC容器,如何获取到IoC容器?(接口)
  4. IoC容器得到后,如何从容器中获取bean?(接口方法)
  5. 用Spring导入那些坐标?(pom,xml)
    在这里插入图片描述
    要交给他管理要先写一个配置文件
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三.DI入门案例分析

  1. 基于IoC管理Bean
  2. Service中用new形式创建的Dao对象是否保留?否
  3. Service中需要的Dao对象如何进入到Service中?提供方法
  4. Seivice与Dao的关系如何描述?配置

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

四.bean基础配置

在这里插入图片描述
bean的别名在这里插入图片描述
在这里插入图片描述
bean作用范围配置
在这里插入图片描述

在这里插入图片描述

五.bean的实例化(创建)

bean本质:对象,创建bean使用构造方法完成
无参
在这里插入图片描述
在这里插入图片描述

六.bean实例化——静态工厂

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七.bean实例化——示例工程与FactoryBean

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
单例
在这里插入图片描述
造出非单例对象在这里插入图片描述
在这里插入图片描述

八.bean的生命周期

  • 生命周期:从创建到消亡的过程
  • bean生命周期:bean从创建到销毁的整体过程
  • bean生命周期控制:在bean创建后到销毁前做的一些事情
    现在运行的是dao,也就是说虽然配置的里面有service,dao,但是运行的时候拿的只是dao,service现在并没参与程序运行
    控制dao的生命周期
  1. bean创建后
  2. bean消亡前
java">public class BookDaoImpl impkents BookDao{public void init (){//bean初始化对应的操作System.out.println("init...");}public void destory(){//bean销毁前的操作System.out.println("destory...");}

要在配置文件resources中提前做配置applicationContext.xtml

java"><bean id="bookDao" calss="com.ithema.dao.impl.BookDaoImpl" init-method="init" destory-method="destory"/>

在这里插入图片描述
destory为什么没有执行?
程序运行在java虚拟机中,把bean初始化后程序运行完虚拟机退出

如何做到?

  • 在虚拟机退出前把容器关闭
java">//service(AppForLiftCycle.java
public class AppForLifeCycle{public ststic void main(String [] args){ClassPathXtmlApplicationContext ctx=new ClassPathXmlApplicationContext("application.xml); 											  //ApplicationContect ctx=new ClassPathXmlApplicationContext("application.xml);BookDao bookDao=(BookDao) ctx.getBean("bookDao");bookDao.save();ctx.close();//没有这个方法,ctx调用的是ApplicationContext接口,这个接口没有close方法,换成ClassPathXtmlApplicationContext,理由如下
}

在这里插入图片描述
在这里插入图片描述

有close方法,这个方法从它的父类继承过来。在这里插入图片描述

  • 设计关闭钩子
    ctx.registerShutdownHook();在任何时间都可以
    close更暴力
    在servce按照spring接口方式把生命周期做一遍不乱
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
set执行在init后,属性运行完后才开始运行这个操作
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

九.依赖注入的两种方式

  • set方法
  • 构造方法
    在这里插入图片描述
  • 引用类型
  • 简单类型(基本数据类型与String)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

十.构造器注入

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

十一.依赖自动装配

IoC容器根据bean依赖的资源在容器中自动查找并注入到bean的过程
在这里插入图片描述
按类型
在这里插入图片描述

在这里插入图片描述
按名称
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

十二.集合注入

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

十三.案例:数据源对象管理

对于第三方bean如何管
第三方资源配置管理
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

十三.加载properties文件

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

十四.容器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

十五.核心容器总结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

十六.注解开发

在这里插入图片描述
在这里插入图片描述

十七.纯注解开发

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

十八.bean的管理

在这里插入图片描述
在这里插入图片描述

十九.依赖注入

自动装配
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二十.第三方bean管理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二十一.第三方bean依赖注入

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二十二.注解开发总结

XML格式配置与注解格式配置比较在这里插入图片描述

二十三.Spring整合MyBatis

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二十四.Spring整合JUnit

在这里插入图片描述
在这里插入图片描述

二十五.AOP简介

  • AOP核心概念
  • AOP作用
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二十六.AOP的入门案例

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

二十七.AOP工作流程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二十八.AOP切入点表达式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二十九.AOP通知类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

三十.AOP总结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三十一.SpringMVC简介

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
灵活性强
在这里插入图片描述

三十二.SpringMVC入门案例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三十三.入门案例工作流程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三十四.bean加载控制

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三十五.PostMan工具介绍

在这里插入图片描述

三十六.设置请求映射路径

在这里插入图片描述
在这里插入图片描述

三十七.get请求和post请求发送普通参数

在这里插入图片描述
在这里插入图片描述

三十八.5种类型参数传递

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三十九.json数据传递参数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/server/152806.html

相关文章

使用echarts 绘制县级以下 乡镇地图并标注若干坐标点。获取县级以下乡镇的边界坐标

最终效果&#xff1a; 要做一个乡镇级的地图&#xff0c;并标出某些企业的坐标点。 1、使用高德&#xff0c;但高德不支持县级以下。放弃 2、使用echarts 图表 但是使用地理坐标系时&#xff0c;我还是没有乡镇的边界线经纬度。首先要获取边界线啊&#xff0c;方法如下&#…

云手机方案全解析

助力账号注册登录 在 TikTok 账号注册及登录方面&#xff0c;云手机发挥着至关重要的作用。由于 TikTok 平台对网络环境要求严格&#xff0c;只有国外环境才能使用&#xff0c;云手机则能够通过模拟海外环境来解决这一难题&#xff0c;它可以依据代理设置直接生成相应的语言、定…

Linux之压缩解压相关命令

1、gzip/gunzip 作用&#xff1a;压缩和解压文件 语法&#xff1a; #压缩 压缩后缀是.gz gzip 文件 # 解压 gunzip 文件.gz 注意&#xff1a; (1)只能压缩文件不能压缩目录 (2)不保留原来的文件 (3)同时多个文件会产生多个压缩包 2、zip/unzip 作用&#xff1a;压缩和解压…

WebSocket了解

WebSocket 定义与概述 定义&#xff1a;WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。它使得客户端和服务器之间的数据交互更加实时、高效&#xff0c;能够在浏览器和服务器之间建立持久的连接&#xff0c;允许双向数据传输。背景与目的&#xff1a;传统的 HTTP 协…

用人话讲计算机:Python篇!(十五)迭代器、生成器、装饰器

一、迭代器 &#xff08;1&#xff09;定义 标准解释&#xff1a;迭代器是 Python 中实现了迭代协议的对象&#xff0c;即提供__iter__()和 __next__()方法&#xff0c;任何实现了这两个方法的对象都可以被称为迭代器。 所谓__iter__()&#xff0c;即返回迭代器自身 所谓__…

网络安全(黑客)的岗位职责

​前言 如何成为一名黑客 很多朋友在学习安全方面都会半路转行&#xff0c;因为不知如何去学&#xff0c;在这里&#xff0c;我将这个整份答案分为 黑客&#xff08;网络安全&#xff09;入门必备、黑客&#xff08;网络安全&#xff09;职业指南、黑客&#xff08;网络安全&a…

【C语言】代码BUG排查方式

【C语言】代码BUG排查方式 文章目录 [TOC](文章目录) 前言一、BUG复现二、printf三、仿真器断点调试1.清除所有断点2.进入调试模式3.打断点&#xff0c;执行 四、参考资料总结 前言 使用工具&#xff1a; 1.ARM仿真器/J-OBV2仿真器 提示&#xff1a;以下是本篇文章正文内容&am…

Python中所有子图标签Legend显示详解

在数据可视化中&#xff0c;图例&#xff08;legend&#xff09;是一个非常重要的元素&#xff0c;它能够帮助读者理解图表中不同元素的含义。特别是在使用Python进行可视化时&#xff0c;matplotlib库是一个非常强大的工具&#xff0c;能够轻松创建包含多个子图的图表&#xf…