Spring入门概念 以及入门案例
Spring入门案例
- Spring
- spring是什么
- spring的狭义与广义
- spring的两个核心模块
- IoC
- AOP
- Spring framework特点
- spring入门案例
- 不用new方法,如何使用返回创建的对象
- 容器:IoC
- 控制反转
- 依赖注入
Spring
spring是什么
- spring是一款主流的Java EE轻量级开源框架
spring的狭义与广义
- 广义上的spring泛指以Spring Framework为核心的Spring技术栈
- 狭义上的spring特指Spring Framework,通常我们将它称为Spring框架
spring的两个核心模块
IoC
- Inverse of Control,的简写,译为“控制反转”,指把创建对象过程交给Spring进行管理
AOP
- Aspect Oriented Programming的简写,译为“面向切面编程”。AOP用来封装多个类的公共行为,将那些与业务无关,却为业务模块所共同调用的逻辑封装起来,减少系统的重复代码,降低模块间的耦合度,另外,AOP还解决一些系统层面上的问题,比如日志、事务、权限等
Spring framework特点
- 非侵入式
- 控制反转
- 面向切面编程
- 容器
- 组件化
- 一站式
spring入门案例
- 引入spring相关依赖
<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.1.14</version></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.6.3</version></dependency></dependency></dependencies>
- 创建类、定义属性和方法
public class User {public void add(){System.out.println("add.....");}
}
- 按照spring要求创建配置文件(xml格式)
注意:这里的class中是你的文件路径,由于波煮是跟着B站尚硅谷学的,所以这里就是com.atguigu.spring6
<!--id属性:唯一标识class属性:要创建对象所在类的全路径(包名称+类名称)
--><bean id="user" class="com.atguigu.spring6.User"/>
- 在spring配置文件配置相关信息
- 进行最终测试
不用new方法,如何使用返回创建的对象
- 加载bean.xml配置文件
- 对xml文件进行解析操作
- 获取xml文件beam标签属性值(ID属性值和class属性值)
- 使用反射根据类全路径创建对象
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestUser {@Testpublic void testUserObject(){//加载spring配置文件,对象创建ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");//获取创建的对象User user = (User)context.getBean("user");System.out.println("1:"+user);//使用对象调用方法进行测试System.out.print("2:");user.add();}
}
容器:IoC
- Spring通过IoC容器来管理所有Java对象的实例化和初始化,控制对象与对象之间的依赖关系
- 我们将由IoC容器管理的Java对象称为Spring Bean,它与使用关键字new创建的Java对象没有任何区别
- 容器放bean对象,使用map集合
控制反转
- 控制反转是一种思想
- 控制反转是为了降低程序耦合度,提高程序扩展力
- 控制反转,反转的是什么?
- 将对象的创建权利交出去,交给第三方容器负责
- 将对象和对象之间关系的维护权交出去,交给第三方容器负责
- 控制反转这种思想如何实现呢?
- DI(dependency injection):依赖注入
依赖注入
- DI(Dependency injection):依赖注入,依赖注入实现了控制反转的思想
- 定义:指Spring创建对象的过程中,将对象依赖属性通过配置进行注入
- 依赖注入常见的实现方式包括两种:
- set注入
- 构造注入
- 结论:IOC是一种控制反转的思想,而DI是对IOC的一种具体实现
- Bean管理说的是:Bean对象的创建,以及Bean对象中属性的赋值(或者叫做Bean对象之间关系的维护)
相关文章:
Spring入门概念 以及入门案例
Spring入门案例 Springspring是什么spring的狭义与广义spring的两个核心模块IoCAOP Spring framework特点spring入门案例不用new方法,如何使用返回创建的对象 容器:IoC控制反转依赖注入 Spring spring是什么 spring是一款主流的Java EE轻量级开源框架 …...
SpringAI调用硅基流动免费模型
一、引入Spring AI 新建一个Spring Boot的工程,在工程中引入Spring AI的依赖,Spring AI支持Ollma、类OpenAI的接口,这两个引入的pom不一样,这里示例中是使用的硅基流动的模型 <!-- Spring Boot版本要 2.x 或者 3.x以上-->…...
Java 开发中主流安全框架的详细对比,涵盖 认证、授权、加密、安全策略 等核心功能,帮助开发者根据需求选择合适的方案
以下是 Java 开发中主流安全框架的详细对比,涵盖 认证、授权、加密、安全策略 等核心功能,帮助开发者根据需求选择合适的方案: 1. 主流安全框架对比表 框架名称类型核心功能适用场景优点缺点官网/文档Spring Security企业级安全框架认证、授…...
【TVM教程】在支持 CMSIS-NN 的 Arm(R) Cortex(R)-M55 CPU 和 Ethos(TM)-U55 NPU 裸机上运行 TVM
Apache TVM是一个深度的深度学习编译框架,适用于 CPU、GPU 和各种机器学习加速芯片。更多 TVM 中文文档可访问 →https://tvm.hyper.ai/ 作者:Grant Watson 本节使用示例说明如何使用 TVM 在带有 CMSIS-NN 的 Arm Cortex-M55 CPU 和 Ethos™-U55 NPU 的…...
【Ai/Agent】Windows11中安装CrewAI过程中的错误解决记录
CrewAi是什么,可以看之下之前写的 《初识CrewAI多智能代理团队协框架》 (注:这篇是基于linux系统下安装实践的) 基于以下记录解决问题后,可以再回到之前的文章继续进行CrewAI的安装 遇到问题 在windows系统中安装 CrewAi 不管是使用 pip 或者…...
洛谷 P11962:[GESP202503 六级] 树上漫步 ← dfs + 邻接表
【题目来源】 https://www.luogu.com.cn/problem/P11962 【题目描述】 小 A 有一棵 n 个结点的树,这些结点依次以 1,2,⋯,n 标号。 小 A 想在这棵树上漫步。具体来说,小 A 会从树上的某个结点出发,每⼀步可以移动到与当前结点相邻的结点&…...
Linux shell脚本编程
什么是Shell程序设计? 也就是给计算机发命令,让它帮你做事,你通过shell 的小工具,用键盘输入指令,linux就会根据这些指令去执行任务,就像你法号一个指令一样。 shell的强大之处? 文件处理&a…...
嵌入式硬件篇---Uart和Zigbee
文章目录 前言一、UART(通用异步收发传输器)1. 基本概念2. 工作原理帧结构起始位数据位校验位停止位 异步通信波特率 3. 特点优点缺点 4. 典型应用 二、ZigBee1. 基本概念2. 技术细节工作频段2.4GHz868MHz 网络拓扑星型网络网状网络簇状网络 协议栈物理层…...
Linux Makefile-概述、语句格式、编写规则、多文件编程、Makefile变量分类:自定义变量、预定义变量
目录 1.make 1.1 make 命令格式 2.Makefile 核心概念 2.1创建并运行 Makefile步骤 3. Makefile编写 3.1最基础Makefile 3.1.1使用默认make命令 3.1.2使用make -f 命令 3.1.3 gcc编译常用组合选项 3.1.4 make 和 make all区别 3.1.4.1 all 是默认目标 3.1.4.2 al…...
Kotlin日常使用函数记录
文章目录 前言字符串集合1.两个集合的差集2.集合转数组2.1.集合转基本数据类型数组2.2.集合转对象数组 Map1.合并Map1.1.使用 操作符1.2.使用 操作符1.3.使用 putAll 方法1.4.使用 merge 函数 前言 记录一些kotlin开发中,日常使用的函数和方式之类的,…...
【JavaScript】异步编程
个人主页:Guiat 归属专栏:HTML CSS JavaScript 文章目录 1. 异步编程基础1.1 同步与异步1.1.1 同步执行1.1.2 异步执行 1.2 JavaScript 事件循环 2. 回调函数2.1 基本回调模式2.2 错误处理2.3 回调地狱 3. Promise3.1 Promise 基础3.2 Promise 链式调用3…...
批量合并多张 jpg/png 图片为长图或者 PDF 文件,支持按文件夹合并图片
我们经常会碰到需要将多张图片拼成一张图片的场景,比如将多张图片拼成九宫格图片,或者将多张图片拼成一张长图。还有可能会碰到需要将多张图片合并成一个完整的 PDF 文件来方便我们进行打印或者传输等操作。那这些将图片合并成一张图片或者一个完整的文档…...
使用docker 安装向量数据库Milvus
Miluvs 官网 www.milvus.io/ https://milvus.io/docs/zh/install_standalone-docker-compose-gpu.md 一、基本概念 向量数据库:Milvus是一款云原生向量数据库,它支持多种类型的向量,如浮点向量、二进制向量等,并且可以处理大规模…...
在线PDF文件拆分工具,小白工具功能实用操作简单,无需安装的文档处理工具
小白工具中的在线 PDF 文件拆分工具是一款功能实用、操作便捷的文档处理工具,以下是其具体介绍: 操作流程 上传 PDF 文档:打开小白工具在线PDF文件拆分工具 - 快速、免费拆分PDF文档 - 小白工具的在线 PDF 文件拆分页面,通过点击 …...
Blender画图——阵列使用
如图我需要多个图示的图形,并且排成一个阵列效果。 如图依次点击效果。不要用相对偏移,要用恒定偏移。 如图设置数量。 如图完成x方向的画图后,我们需要在y方向再用一个阵列。...
VSCode 常用快捷键
Visual Studio Code (VSCode) 提供了许多快捷键,以帮助开发者提高编码效率。以下是一些常用的 VSCode 快捷键,这些快捷键适用于大多数操作系统,但在 macOS 上可能会有所不同(通常是将 Ctrl 替换为 Cmd)。 1. 文件和编…...
缓存相关问题
Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 Memcache与Redis的区别都有哪些? 单线程的redis为什么这么快 redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构 redis的过期策略以及内存淘汰机制 Redis 为什么…...
每日一题(小白)暴力娱乐篇22
为什么要经常学习暴力和一些娱乐呢?因为对于我们来说,暴力是最直接的方式是肯定能满足一部分答案的方法,娱乐是为了让算法变得更有趣,你愿意多去尝试多去练习,这才是最要紧的。 由题意知,就是计算两个数字…...
深入理解 Vuex:核心概念、API 详解与最佳实践
目录 Vuex 简介核心概念与工作流程核心 API 详解模块化开发 (modules)插件(Plugins)与扩展高级技巧与最佳实践 Vuex 简介 Vuex 是 Vue.js 的官方状态管理库,专为复杂应用设计,用于集中管理所有组件的共享状…...
成为一种国家战略范畴的新基建的智慧园区开源了。
智慧园区场景视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界…...
拜特科技助力科达制造,资金管理信息化迈入新阶段
近日,拜特科技成功签约科达制造股份有限公司(以下简称“科达制造”)资金管理系统升级项目。科达制造通过资金管理系统的不断迭代升级和优化,能够更加高效地管理和运用资金,提高企业的资金利用效率,满足企业…...
每日一题(小白)暴力娱乐篇20
这个题用瞪眼法解决,snakeaekns 代码如下👇 public static void main(String[] args) {Scanner scannew Scanner(System.in);System.out.println("aekns");scan.close();} 第二种方式:将snack拆解,按照大小进行排序。…...
Flutter iOS 项目中 VolumeControllerPlugin 报错解决方案
Flutter iOS 项目中 VolumeControllerPlugin 报错解决方案 在开发 Flutter 应用时,有时会遇到 iOS 项目构建失败的情况,其中一种较为常见的错误是与 VolumeControllerPlugin 相关的报错,错误信息如下: Could not build the prec…...
Java实战报错 tcp
为什么报错tcp Preview 从图片中的错误信息来看,程序遇到了 java.net.BindException,具体错误信息是 "Address already in use: bind"。这意味着你的程序试图绑定到一个已经被其他进程占用的端口(在本例中是9999端口)。…...
【补题】P10424 [蓝桥杯 2024 省 B] 好数(数位dp)
题意: 一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位……)上的数字是奇数,偶数位(十位、千位、十万位……)上的数字是偶数,我们就称之为“好数”。 给定一个正整数 N…...
控制 ElementUI el-table 树形表格多选框的显示层级
1、你可以通过 selectable 属性来控制哪些行可以选择(显示多选框) <el-table:data"tableData"row-key"id"default-expand-all:tree-props"{children: children, hasChildren: hasChildren}"select"handleSelect&…...
今日行情明日机会——20250409
今日行情还需要考虑关税对抗~ 2025年4月8日涨停的主要行业方向分析 1. 军工(19家涨停) 细分领域:国防装备、航空航天、军民融合。催化因素:国家安全战略升级、国防预算增加、重大军工项目落地预期。 2. 免税(15家涨…...
基础知识补充篇:什么是DAPP前端连接中的provider
专栏:区块链入门到放弃查看目录-CSDN博客文章浏览阅读352次。为了方便查看将本专栏的所有内容列出目录,按照顺序查看即可。后续也会在此规划一下后续内容,因此如果遇到不能点击的,代表还没有更新。声明:文中所出观点大多数源于笔者多年开发经验所总结,如果你想要知道区块…...
47常用控件_QWidget的toolTip属性
一个 GUI 程序,界面比较复杂, 按啥的很多~~ 当你把鼠标悬停到这个控件上的时候,就能弹出一个提示~~ setToolTip:设置提示内容 setToolTipDuring:设置提示的时间 toolTip 只是给用户看的.在代码中一般不需要获取到 toolTip. 代码示例: 设置按钮的 toolT…...
解密工业控制柜:认识关键硬件(PLC)
前言 作为一名视觉开发工程师,我们不仅要做到做好自己的工作,我们更需要在工业现场学习更多知识,最近网上流传很多,“教会徒弟,饿死师傅”;在自动化行业中,在项目下来很忙的时候,我们…...
PDF编辑,小白工具功能丰富多样,在线无需下载,操作便捷,新手小白必备
在当今数字化办公和学习的时代,PDF 文件的使用极为广泛,而小白工具的在线 PDF 浏览器以其强大且丰富的功能,成为了一款不可多得的优质 PDF 阅读工具,PDF编辑,在线无需下载,操作便捷,新手小白必备以下为您详细推荐: 功能…...
网络安全公司推荐:F5荣膺IDC全球Web应用与API防护领导者
API的广泛使用正推动安全实践的重大变革。研究表明,有41%的企业管理的API数量至少与应用数量相等,因此企业亟需实现全面的API防护。近日,IDC发布《IDC MarketScape:2024年全球Web应用和API防护企业平台供应商评估报告》࿰…...
WPF轮播图动画交互 动画缩放展示图片
WPF轮播图动画交互 动画缩放展示图片 效果如下图: XAML代码: <Window x:Class"Caroursel.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/20…...
玩转Docker | 使用Docker安装FileDrop文件共享工具
玩转Docker | 使用Docker安装FileDrop文件共享工具 前言一、FileDrop介绍FileDrop简介主要特点二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署FileDrop服务下载镜像创建容器检查容器状态检查服务端口安全设置四、访问FileDrop应用创建名称五、测试与使用…...
实战篇-主时钟约束
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据 总结 前言 这是对B站傅里叶的猫视频时钟约束的笔记 一、主时钟约束 report_clock_networks …...
Oracle JDBC驱动 ojdbc14:使用指南与版本说明(附资源下载)
ojdbc14 是 Oracle 公司提供的 JDBC(Java 数据库连接)驱动程序,用于连接 Java 应用程序与 Oracle 数据库。 ojdbc14.jar包已下载:https://pan.quark.cn/s/5ee7841dcd9c 关键信息 用途:使 Java 应用程序能够连接 Orac…...
spring mvc 异常处理中@RestControllerAdvice 和 @ControllerAdvice 对比详解
RestControllerAdvice 和 ControllerAdvice 对比详解 1. 基本概念 注解等效组合核心作用ControllerAdviceComponent RequestMapping(隐式)定义全局控制器增强类,处理跨控制器的异常、数据绑定或全局响应逻辑。RestControllerAdviceControll…...
单元测试原则之——不要过度模拟
什么是过度模拟? 过度模拟(over-mocking)是指在单元测试中,模拟了太多依赖项,甚至模拟了本不需要模拟的简单对象或行为。过度模拟会导致: 测试代码变得复杂,难以阅读和维护。测试逻辑偏离了实际业务逻辑,无法验证真实代码的行为。忽略了被测单元与依赖项之间的真实交互…...
云轴科技ZStackCTO王为:AI Infra平台具备解决私有化AI全栈难题能力
4月1-2日,2025中国生成式AI大会在北京举办,该会议已成为国内AI领域最具影响力的产业峰会之一。云轴科技ZStack CTO王为受邀在“大模型”峰会上发表主题为《AI 原生实践:企业实际场景的 AI 赋能与 Infra 实践探索》演讲,并参加《De…...
牛客 小苯的Z串匹配
注意数组元素是0的情况 #include<iostream> using namespace std;int t; const int N2e510;int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>t;while(t){long long n;cin>>n;long long a[N];for(int i0; i<n; i) cin>>a[i];stri…...
拜特科技受邀参加跨境电商行业分会,共探资金管理数字化与AI应用新路径
3月12日,由广东省首席信息官协会主办的“跨境电商行业分会——走进绿联科技”活动在深圳绿联科技圆满举行。作为专注于金融科技与资金管理数字化解决方案的领先提供商,拜特科技受邀参加此次会议,与行业精英共同探讨跨境电商企业的资金管理数字…...
贪心算法(17)(java)可被三整除的最大整数和
给你一个整数数组 nums,请你找出并返回能被三整除的元素 最大和。 示例 1: 输入:nums [3,6,5,1,8] 输出:18 解释:选出数字 3, 6, 1 和 8,它们的和是 18(可被 3 整除的最大和)。 …...
架构师面试(二十八):业务建模
问题 今天我们撇开纯技术,聊一下关于【业务建模】的话题。 何为业务建模?即通过易于理解的模型将业务中的关键问题准确表达出来。 业务建模是需求分析环节乃至整个软件生命周期中非常关键的一环,它几乎决定了软件的开发周期和成本。下面关…...
求教:vue中的find()函数的用法this.$set
需求:为了实现联动,当我在选择问题标题之后,后面几列的内容就会自动联动显示 方案一: 选完之后 直接 是this.questionList[index] this.selected; 这样的效果虽然改动了数组,但是页面上没有显示出来实际数组的内容 …...
常见算法模板总结
文章目录 一、二叉树1. DFS2. BFS 二、回溯模板三、记忆化搜索四、动态规划1. 01背包朴素版本滚动数组优化 2. 完全背包朴素版本滚动数组优化 3. 最长递增子序列LIS朴素版本贪心二分优化 4. 最长公共子序列5. 最长回文子串 五、滑动窗口六、二分查找七、单调栈八、单调队列九、…...
生产者消费者模型
目录 一、生产者消费者模型 1. 生产者消费者模型是什么? 2. 为什么使用生产者消费者模型? 3. 生产者消费者模型的特点(321原则) 🌵3种关系 🌵2种角色 🌵1个交易场所 二、基于BlockingQue…...
linux里怎么禁用 其他用户使用sudo添加定时器,例如创建的tomcat用户禁止使用 sudo crontab -u tomcat -e 添加定时器
要禁止 tomcat 用户通过 sudo crontab -u tomcat -e 添加定时任务,需从 sudo 权限控制和 crontab 访问限制两方面入手。以下是具体步骤: 一、核心思路 禁止 tomcat 用户使用 sudo 提权执行 crontab 修改 /etc/sudoers 配置,移除 tomcat 用户…...
函数作为返回值输出
实际上,函数当做返回值输出的应用场景也很多,也更能体现函数式变成的巧妙,让函数继续返回一个可执行的函数,意味着运算过程是可延续的。 判断数据的类型 常见的判断一个数据的类型的函数: 单例模式 下面是一个单例模…...
黑马 SpringAI+DeepSeek 实战:从对话机器人到企业级知识库的大模型开发全攻略
附完整代码 项目案例,3 天吃透大模型应用开发核心技术 需要完整项目学习视频以及源码的私信博主,谢谢~大家一起加油呐!! 01.认识AI和大模型 小结 AI的发展过程 符号主义 机器学习 深度学习——自然语言处理(NLP…...
word表格间隔设置
1.怎么解决word表格间隔达不到我们想要的要求 其实很简单, 我们直接在word表格里面, 全选表格中里面的内容。接着,我们选择自动调整---->根据内容自动调整表格,即可达到我们想要的要求...