当前位置: 首页 > article >正文

SpringBoot——核心概念

文章目录

  • 一.核心概念
    • 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消亡前
public class BookDaoImpl impkents BookDao{
	
	public void init ()
	{
		//bean初始化对应的操作
		System.out.println("init...");
	}
	public void destory()
	{
		//bean销毁前的操作
		System.out.println("destory...");
	}

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

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

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

如何做到?

  • 在虚拟机退出前把容器关闭
//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.kler.cn/a/449435.html

相关文章:

  • 动态规划<四> 回文串问题(含对应LeetcodeOJ题)
  • 密码学期末考试笔记
  • Windbg常用命令
  • Redis 持久化机制详解
  • nest 学习3
  • Java - 日志体系_Apache Commons Logging(JCL)日志接口库
  • 【国产NI替代】基于全国产FPGA的16振动+2转速+8路IO口输入输出(24bits)256k采样率,高精度终端采集板卡
  • 再服务器上建立新的编译环境
  • ubuntu18.04升级到ubuntu20.04
  • WPF+MVVM案例实战与特效(四十六)- 打造动态背景时钟控件,轻松提升界面美感
  • Android 代码模式的理解
  • Flamingo:少样本多模态大模型
  • 目标检测-R-CNN
  • Pytorch | 利用EMI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击
  • 【阅读记录-章节6】Build a Large Language Model (From Scratch)
  • c# 不同数据类型转换
  • uniapp-微信小程序调用摄像头
  • springboot474基于web的垃圾分类回收系统(论文+源码)_kaic
  • 低代码开源项目Joget的研究——安装部署
  • 动态规划<四> 回文串问题(含对应LeetcodeOJ题)
  • stm32实现回调功能
  • jsp-servlet开发
  • 【Linux】资源控制机制 — cgroups 详解
  • Cesium材质——Material
  • 完成第一个 Vue3.2 项目后,这是我的技术总结
  • SSM-期末项目 - 基于SSM的宠物信息管理系统