是Spring啊!

article/2025/10/2 1:36:56

一.概念


  1. spring概念

一个包含了众多工具方法的 IoC 容器

okk~~分析一下这句话意思,众多方法,IoC 是形容词,容器是名词 ->

众多方法:比如一个类里有许多方法, 容器:存储的东西 重点就是IoC是什么?

  1. Ioc

2.1解释

IoC -> Inversion of Control 控制反转 -> 对象的生命周期 -> 控制权: 由程序猿 变为 Spring IoC

简单来说 Java里的对象的创造和销毁都是被程序猿掌控的, 但是IoC的话 就变了, 掌控这些的不是程序猿了,而是Spring

2.2 意义

所以,把对象的生命周期的控制权交出去了,有什么好处?

~解耦合!!!!

每个对象都要程序猿创建,如果1的创建需要2,2的创建需要3..... 那么当代码出现异常,76出现了bug - > 前面的1到75就会都有问题产生 -> 所以这个时候,好处显而易见

~并且,对象的生命周期交给IoC维护, 作为程序猿无需关注

  1. DI

其实IoC只是一个思想, 那么具体的实现其实是 DI

DI -> Dependency Injection 依赖注入

IoC DI 从不同的维度描述了同一件事 比如->我的计划和实际操作(我要学会一门乐器->钢琴十级了现在)


二.创建一个Spring项目

1.复杂的创建

1.1.创建

1.1.1创建一个maven项目
1.1.2添加spring配置文件

spring.xml的代码

<?xml version="1.0" encoding="UTF-8"?>
<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">
</beans>

pom.xml

<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.3.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>5.2.3.RELEASE</version></dependency></dependencies>

1.1.3创建spring对象
1.1.4将对象配置到spring中
1.1.5得到spring对象
1.1.6获取spring对象
1.1.7使用一下

1.2. 注意事项

1.3. ApplicationContext BeanFactory区别

ApplicationContext BeanFactory 区别:

* 相同:

都可以实现从容器中获取 bean, 都提供了 getBean的方法

* 不相同:

* 1.ApplicationContext 是 BeanFactory 的子类,

* BeanFactory提供了基础访问 Bean的方法

* ApplicationContext 除了拥有 BeanFactory的所有功能外,还提供了更多的方法,对国际化的支持,资源访问支持...

* 2.性能方面

* BeanFactory 按需加载 Bean

* ApplicationContext饿汉模式, 创建的时候所有 Bean都加载了(貌似是智能的,电脑空间够,才行,不够的话,还是按需加载)

2.简单的创建

2.1创建 - 5大类注解

<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.3.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>5.2.3.RELEASE</version></dependency></dependencies>

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:content="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!--                                       所有beans存放的位置--><content:component-scan base-package="beans"></content:component-scan>
</beans>

2.1.2 5大类注解
2.1.2.1 5大类注解

@Controller 控制器 业务逻辑层

@Service 服务 服务层

@Repository 仓库 持久层

@Configuration 配置 配置层

@Component 组件

2.1.2.2 5大类注解的意义

@Configuration -> @Controller 控制器 (前端参数的校验) -> @Service(数据的组装,接口的调用) -> @Repository(和数据库进行交互)

可以让代码可读性提高, 让程序员快速知道当前类的用途

比如 Java里的 @Override 看到就知道被标注的方法重载了父类的方法

2.1.2.3 5大类注解的关系

其他四个类本身是属于 @Component 的“⼦类”--看源码

2.1.3 解释

public static void main(String[] args) {String name1 = "user";String name2 = "USER";System.out.println(Introspector.decapitalize(name1));System.out.println(Introspector.decapitalize(name2));}

2.2创建-使用方法注解@Bean

2.2.1使用方法注解@Bean

2.2.2 重命名 Bean

设置 name 属性给 Bean 对象进⾏重命名

2.2.3 注意事项

* Bean 的命名规则 :

* 当没有设置 name属性时, 那么 bean的默认名称时方法名

* 通过重命名的 name属性对应值来获取后, 只能用重命名, 不能再用方法名

name={} 可以省略


* Bean 的命名可以起多个名字 :

但是会有问题--同⼀类型多个 @Bean 报错


3 获取(对象装配/注入)

三个方法: 属性/字段注入, 构造方法注入, Setter注入

关键字: @Autowired @Resource

3.1 三种注入区别:

  1. 属性注入写法简单, 但通用性不好,只能IoC容器

  1. Setter注入, 早期Spring推荐版本, 但是通用性不好

  1. 构造方法注入, 通用性好, 且确保使用对象前一定被初始化了

3.2 关键字区别:

  1. A来自于Spring, R来自于JDK注解

  1. 使用参数设置不同, R支持更多的'

  1. R不能用于构造方法注入

3.3 @Bean 将一个类型的对象注入多次的问题

* @Bean 将一个类型的对象注入多次

* 解决方案三个

* 1. 精确的描述 bean的名称

* 2. 使用 @Resource设置 name的方法来重新命名注入对象 @Resource(name="user")

* 3. 使用 @Autowired+ @Qualifier来筛选 bean对象

小结


http://chatgpt.dhexx.cn/article/uftMdpir.shtml

相关文章

Spring 是什么

Spring 是什么 Spring 是一个开源框架. Spring 为简化企业级应用开发而生. 使用 Spring 可以使简单的 JavaBean 实现以前只有 EJB 才能实现的功能. Spring 是一个 IOC(DI) 和 AOP 容器框架 具体描述 Spring: 轻量级&#xff1a;Spring 是非侵入性的 - 基于 Spring 开发的应…

如何理解Spring?

Spring 是包含了众多⼯具⽅法的 IoC 容器。 那何为容器呢&#xff1f;容器是用来容纳某种东西的装置。比如&#xff1a;List/Map 是数据存储容器&#xff0c;Tomcat 是Web 容器等等。Spring 也是⼀个容器&#xff0c;是⼀个 IoC 容器。 那何为IoC 呢&#xff1f;IoC Inversi…

【spring】spring是什么?详解它的特点与模块

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 作者会持续更新网络知识和python基础知识&#xff0c;期待你的关注 目录 一、spring介绍 二、spring的特点&#xff08;七点&#xff09; 1、简化开发 2、AOP的支持 3、声明式事务的支持 4、方便测试 5、…

Spring - 什么是spring?

好久没更新博客了&#xff0c;今天小更一波。 学习java已经有一段时间了&#xff0c;今天将接触Spring框架技术。 什么是Spring? spring 中文意思就是 春天&#xff0c;实际上spring 是真的给软件行业带来了春天。 使用spring的好处&#xff1f; spring可以解决企业级开发…

Spring和Spring Boot区别

spring和spring boot区别 二者主要区别是&#xff1a; 1、Spring Boot提供极其快速和简化的操作&#xff0c;让 Spring 开发者快速上手。 2、Spring Boot提供了 Spring 运行的默认配置。 3、Spring Boot为通用 Spring项目提供了很多非功能性特性。 一、Spring Boot和Sprin…

作为一个程序员,读不懂Spring就像读不懂对象的心?

???连读同事写的代码都费劲&#xff0c;还读Spring&#xff1f; 咋的&#xff0c;Spring 很难读&#xff01; 这个与我们码农朝夕相处的 Spring&#xff0c;就像睡在你身边的媳妇&#xff0c;你知道找她要吃、要喝、要零花钱、要买皮肤。但你不知道她的仓库共有多少存粮、也…

【Spring源码这样读】-怎么阅读源码

做开发要不要读源码&#xff1f;如果你天天996&#xff0c;真心的不建议你去读源码&#xff08;我是不介意做一个劝退师的&#xff09;。读源码确确实实是一个费时费力的活&#xff0c;如果你每天都很忙&#xff0c;偶尔看一眼&#xff0c;想了解其中的奥秘&#xff0c;这很难办…

CRUD搬砖两三年了,怎么阅读Spring源码?

作者&#xff1a;小傅哥 博客&#xff1a;https://bugstack.cn 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; &#x1f468;‍&#x1f4bb;连读同事写的代码都费劲&#xff0c;还读Spring&#xff1f; 咋的&#xff0c;Spring 很难读&…

一、如何阅读Spring源码(全网最简单的方法)

学习Java最好最有效的方法是学习Spring&#xff0c;但是最笨最没效的方法也是学习Spring。 为什么这么说呢&#xff1f;道理其实很简单 A、Spring很庞大&#xff0c;很完善&#xff0c;也非常的底层&#xff0c;如果我们学会的Spring&#xff0c;那么也就掌握了很多的技术的核心…

【Spring】——Spring简单 读和取

前言 ❤️❤️❤️Spring专栏更新中&#xff0c;各位大佬觉得写得不错&#xff0c;支持一下&#xff0c;感谢了&#xff01;❤️❤️❤️ Spring_冷兮雪的博客-CSDN博客 上期我们讲解了Spring的创建与使用&#xff0c;发现 将Bean 注册到容器 这一步中&#xff0c;如果Bean对象…

读取Spring配置文件的方法(Spring读取资源文件)

大厂必备&#xff01;读取spring配置文件的两种方法,需要的朋友可以参考下。 第一种&#xff1a; 1.spring配置文件 2.读取属性方法 第二种&#xff1a; 直接读取方式: 通过spring配置方式读取&#xff1a; spring bean配置: // 编辑不易&#xff0c;spring框架系列的快要更…

php如何将时间戳,PHP如何将时间戳转换日期

PHP如何将时间戳转换日期 在php中可以使用“date()”函数将时间戳转换日期&#xff0c;该函数用于格式化一个本地时间日期&#xff0c;其语法是“date($format,$timestamp)”&#xff0c;其参数format表示日期格式&#xff0c;参数timestamp表示要格式化的时间戳。 代码实例&am…

php 时间戳 24小时制,php如何将时间戳转换成小时制

php将时间戳转换成小时制的方法&#xff1a;【date("Y/m/d H:i:s",1446634507)】。date()函数可以把时间戳格式化为可读性更好的日期和时间。 php将时间戳转换称24小时制 (推荐教程&#xff1a;php视频教程)date("Y/m/d H:i:s",1446634507) //2015/11/04 1…

php时间戳转换日期24,php时间戳怎么转换回日期

在php中&#xff0c;可以使用date()函数来将时间戳转换回日期格式。date()函数可把时间戳格式化为可读性更好的日期和时间格式&#xff0c;语法“date (format,时间戳)”&#xff1b;format参数规定转换后的时间戳格式&#xff0c;例“Y-m-d H:i:s”。 本教程操作环境&#xff…

php里日期转为时间戳_php时间戳与日期的转换

php时间戳与日期的转换 大家也许对PHP时间戳已经有所了解&#xff0c;那么我们如何应用它来获取具体的日期呢&#xff1f;我们今天来为大家介绍一下PHP时间戳获取当前时期的具体方式。 实现功能&#xff1a;获取某个日期的时间戳&#xff0c;或获取某个时间的PHP时间戳。 strto…

html 时间戳转换年月日,时间戳与日期的转换方法

php怎么将指定日期转换为时间戳 date(Y-m-d H:i:s, 1156219870); UNIX时间戳转换为日期用函数: date() 一般形式:date(Y-m-d H:i:s, 1156219870); 日期转换为UNIX时间戳用函数:strtotime() 一般形式:strtotime(2010-03-24 08:15:42); js 中日期 转换成时间戳 例如2013-08-…

常用的计算机C语言,计算机c语言基础知识

计算机c语言基础知识 C语言程序设计是高效计算机专业学生必修的一门基础课程&#xff0c;那么你对计算机c语言了解多少呢?下面是小编整理的计算机c语言基础知识&#xff0c;欢迎大家阅读参考。 计算机c语言的特性 C语言是世界上最流行、使用最广泛的高级程序设计语言之一。在操…

C语言基础知识总结

本文的目的是记录平时工作学习过程中学习到的C语言知识&#xff0c;由于单独一篇文章记录的话可能篇幅过少&#xff0c;因此置顶此文用作此用处&#xff0c;本文从2017-12-16开始记录&#xff0c;后续新增内容不单独列出时间&#xff0c;在MarkEditor中有相应的版本记录。 文件…

【必读】C语言基础知识大全

C语言程序的结构认识 用一个简单的c程序例子&#xff0c;介绍c语言的基本构成、格式、以及良好的书写风格&#xff0c;使小伙伴对c语言有个初步认识。 例1&#xff1a;计算两个整数之和的c程序&#xff1a; #include main() { int a,b,sum; /*定义变量a,b&#xff0c;sum为整…

C语言基础知识概况

一、什么是C语言 就如人的语言分汉语英语&#xff0c;作用是实现人与人之间的交流相同。C语言是一门计算机语言。实现人与计算机交互的一种语言。C语言是一门广泛用于底层开发的编程语言 计算机的结构自上而下大概分为以下几层 应用软件QQ、网盘用户操作系统windows、Linux硬…