Spring详解 📅 发布时间:2026/7/16 10:23:11 👁️ 浏览次数: Spring超详细讲解一、Spring是什么Spring简单来说就是容器框架。Spring的核心概念Application和BeanApplicationContext应用程序上下文和BeanBean其实就是对象Spring把对象称为Bean。ApplicationContext是容器用来容纳BeanBean是可以被Spring管理的对象。Spring的核心功能对象的发现创建配置管理。-Spring的功能此功能非彼功能这里的功能是指Spring主要干什么。Spring的特点就是IOC控制反转和AOP面向切面编程。二、IOC控制反转IOC反转的是对象的控制权IOC是概念非技术。在之前的程序中我们一般用两种方式创建对象new和newInstance(),这样创建的对象属于强引用对象jvm垃圾回收机制永远不会回收这类对象这时候需要手动移除引用。如果没有移除这个对象将一直存在久而久之会引起内存泄露问题。Spring创建的对象可以避免此问题而且还可以指定对象的生命周期和对象之间的关系。IOC思想把对象的控制权拿了回来实现了松散耦合。1.ApplicationContext应用程序上下文大概知道了IOC是什么意思现在对程序实现IOC。反转对象的控制权Application就是用来存放管理spring注入的Bean的容器。Application大致分为三类xmlApplicationContextAnnotationConfigApplicationContextWebApplicationContext。今天先讲xmlApplicationContextxmlApplicationContext字面意思就是用xml配置应用程序上下文。xmlApplicationContext又分为ClassPathXmlApplicationContext和FileSystemXmlApplicationContext。用ClassPathXmlApplicationContext的比较多演示ClassPathXmlApplicationContext。PS项目使用的是maven第一创建 ClassPathXmlApplicationContext 对象把注入对象的xml文件写入对象里。ClassPathXmlApplicationContext context new ClassPathXmlApplicationContext(beans.xml);第二创建xml配置文件实现对象的属性注入。?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beans xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd bean idlinghuchong classspringdemo.Student!--class 是实体类地址-- property nameid value1001/!---property 属性表示对象的属性 name表示参数名 value 表示参数值-- property namename value令狐冲/ property namegender value男/ property namestudentClass refclass01/!--ref 引入其他对象 -- /bean bean idyuelingshan classspringdemo.Student scopeprototype!--scope 表示生命周期 一般默认为 siglenton-- constructor-arg value1002/ constructor-arg value岳灵珊/ constructor-arg value女/ constructor-arg refclass01/ /bean bean idclass01 classspringdemo.StudentClass property nameid value01/ property namename value高软一班/ property namedepartment value信息工程系/ /bean bean idrenyingying classspringdemo.Students factory-methodcreateStudent/ /beansscope表示对象的生命周期siglenton是默认的可以不用设置。prototype表示Bean被调用一次就会创建一个对象可以创建多个对象第三创建实体类package springdemo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import springdemo.StudentClass; public class Student { private String id; private String name; private char gender; Autowired private StudentClass studentClass; public Student() { } public Student(String id, String name, char gender, StudentClass studentClass) { this.id id; this.name name; this.gender gender; this.studentClass studentClass; } public String getId() { return id; } public void setId(String id) { this.id id; } public String getName() { return name; } public void setName(String name) { this.name name; } public char getGender() { return gender; } public void setGender(char gender) { this.gender gender; } public StudentClass getStudentClass() { return studentClass; } public void setStudentClass(StudentClass studentClass) { this.studentClass studentClass; } } package springdemo; import org.springframework.stereotype.Component; public class StudentClass { private String id; private String name; private String department; public String getId() { return id; } public void setId(String id) { this.id id; } public String getName() { return name; } public void setName(String name) { this.name name; } public String getDepartment() { return department; } public void setDepartment(String department) { this.department department; } }第四实现对象的调用Test public void student() { Student s1 (Student)context.getBean(linghuchong);/*getBean(Bean的id)返回object类型*/ s1.setId(1001); Assert.assertEquals(1001, s1.getId()); Student s2 (Student)context.getBean(yuelingshan); s2.setId(1002); Assert.assertEquals(1002, s2.getId()); } Test public void getBeanByClass() { StudentClass studentClass context.getBean(StudentClass.class);/*getBean(StudentClass.class) 返回的是指定类型*/ Assert.assertNotNull(studentClass); Assert.assertEquals(01, studentClass.getId()); }运行Test方法即可总结以上就是今天要讲的内容本文仅仅简单介绍了使用set方法注入属性的使用set方法是较为常用的方法除了set方法还有构造法和工厂方法注入属性。
交友 App 核心架构揭秘:几千万活跃用户是如何实现毫秒级随机匹配的? 案发场景: 你在开发一款类似 Soul 的社交 App,或者一个全网发放 1 亿个唯一验证码的系统。 你需要把这 1 亿个 ID 放进奖池里,供全网用户随时“随机抽取”一个进行匹配。 初级架构的毁灭: 你把 1 亿个 ID 全塞进了一个叫 pool:all… 2026/7/16 1:12:35
基于Java+SSM+Flask漫画阅读系统(源码+LW+调试文档+讲解等)/漫画阅读器/在线漫画/漫画系统/免费漫画阅读/漫画平台/漫画软件/阅读软件/电子漫画/漫画应用/漫画网站 博主介绍 💗博主介绍:✌全栈领域优质创作者,专注于Java、小程序、Python技术领域和计算机毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 2025-2026年最新1000个热门Java毕业设计选题… 2026/7/16 16:40:52
35KV电缆故障在线监测及故障预警测距系统 在线式电力电缆故障测距沃伦森 沃伦森35KV电缆故障在线监测及故障预警测距系统,可以看作是为高压电缆网络安装的“智能健康手环”和“全时值班医生”。它的核心工作是实时监控电缆的运行状态,提前发现隐患,并在故障发生时快速、精准地定位问题点,从而大大提升电… 2026/7/11 8:14:20
CANN/asc-devkit浮点转半浮点8 asc_float2hif8 (废弃) 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://… 2026/7/16 22:23:33
终极指南:Clojure.java.jdbc与HoneySQL集成构建强大SQL查询 终极指南:Clojure.java.jdbc与HoneySQL集成构建强大SQL查询 【免费下载链接】java.jdbc JDBC from Clojure (formerly clojure.contrib.sql) 项目地址: https://gitcode.com/gh_mirrors/ja/java.jdbc Clojure.java.jdbc(原clojure.contrib.sql&am… 2026/7/16 22:23:33
从零到一:基于GNS3的IP网络规划与静态路由实战 1. GNS3环境搭建与基础配置第一次接触GNS3时,我被它逼真的设备模拟能力震撼到了。这个开源的网络仿真平台能完美模拟思科、Juniper等厂商的路由器和交换机,就像在真实设备上操作一样。下面我以Windows系统为例,手把手带你完成环境搭建。安装G… 2026/7/16 22:23:33
从零开始:如何为@ngneat/content-loader贡献代码的完整流程 从零开始:如何为ngneat/content-loader贡献代码的完整流程 【免费下载链接】content-loader ⚪️ SVG component to create placeholder loading, like Facebook cards loading. 项目地址: https://gitcode.com/gh_mirrors/co/content-loader ngneat/conten… 2026/7/16 22:21:32
Golang邮件验证避坑指南:checkmail常见错误及解决方案 Golang邮件验证避坑指南:checkmail常见错误及解决方案 【免费下载链接】checkmail Golang package for email validation 项目地址: https://gitcode.com/gh_mirrors/ch/checkmail checkmail是一个强大的Golang邮件验证包,能够帮助开发者轻松实现… 2026/7/16 22:21:32
YOLOv11无人机航拍秸秆等农作物焚烧检测数据集数据集,秸秆焚烧检测,农作物焚烧识别,农田火焰检测,fire明火检测农田禁烧监管,环保巡检,大气污染防控,田间防火,农业安防,航拍目标检测,计算机视觉 无人机拍摄秸秆等农作物焚烧检测数据集,4500张,yolo,voc,coco三种标注方式 图像尺寸:512*512 类别数量:1类 训练集图像数量:3150; 验证集图像数量:900; 测试集图像数量:450 类别名称: 每一类图像数 ,每一类… 2026/7/16 22:19:32
A--10 Codex Review与GitHub PR工作流实战指南:从代码审查到安全合并 摘要:本文系统讲解如何利用Codex App的Review功能与GitHub PR工作流,实现从代码修改到安全合并的完整流程。涵盖Review面板深度使用、/review命令实战、GitHub Connector配置、PR描述撰写技巧,以及常见问题排查方法。通过多个实战案例和流程图,帮助开发者建立高效的AI辅助代… 2026/7/16 0:00:26
HAM未来路线图:下一代高可用迁移技术的发展方向与展望 HAM未来路线图:下一代高可用迁移技术的发展方向与展望 【免费下载链接】ham Based on the remote memory access capability and high bandwidth of the UB, deterministic duration virtual machine live migration is achieved, addressing planned downtime issu… 2026/7/16 0:04:27
月球是否是从地球分离出去的?——容度原理解释 月球是否是从地球分离出去的?——容度原理解释一、月球起源的“三大假说”与容度原理的重新审视月球起源的三大假说——捕获说(月球是太阳系中独立的星体,被地球引力捕获)、共生说(月球与地球同时从原始星云中形成&… 2026/7/16 0:06:27
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/13 8:31:55
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/16 3:47:53
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/16 12:08:13