Spring入门详细介绍,对新手很友好~~

一文学会Spring,Spring最简单的入门教程(万字好文) spring教程 阅读详情

Spring是什么?

  • Spring是一个开源框架,为了解决企业应用开发的复杂性而创建的,但现在已经不止应用于企业应用
  • 是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架
  • 从大小与开销两方面而言Spring都是轻量级的
  • 通过控制反转(IoC)的技术达到松耦合的目的
  • 提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统服务进行内聚性的开发
  • 包含并管理应用对象的配置和生命周期,这个意义上是一种容器
  • 将简单的自建配置、组合成为复杂的应用,这个意义上是框架

Spring特点:

  • 简单
  • 方便
  • 快捷
  • Spring带来了复杂JavaEE开发的春天

适应范围:

  • 构建企业应用(SpringMVC+Spring+Hibernate/ibatis)
  • 单独使用Bean容器(Bean管理)
  • 单独使用AOP进行切面处理
  • 其他的Spring功能,如:对消息的支持等
  • 在互联网中的应用

什么是框架?

- 维基百科:软件框架,通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件规范时,提供规范所要求之基础功能的软件产品

  • 框架就是制定一套规范或者规则,大家在该规范或者规则下工作.
    框架与类库的区别:
    框架一般是封装了逻辑、高内聚的,类库则是松散的工具组合
    框架专注于某个领域,类库则是更通用

专题一 IOC

什么是IOC?

ioc:控制反转,控制权的转移,应用程序本身不负责依赖对象的创建和维护,而是由外部容器负责创建和维护(例子:需要房子的时候不自己创建,而是找开发商或者房东寻找房源)
DI:(依赖注入)是其一种实现方式
目的:创建对象并且组装对象之间的关系
**注入方式:**构造器注入(构造器类型与Bean类型需对应匹配)和赋值注入

专题二 Bean

Bean的配置项:
  • Id
  • Class
  • Scope
  • Constructor arguments
  • Properties
  • Autowiring mode
  • lazy-initialization mode
  • Initialization/destruction method
  • …
Bean的作用域:
  • singleton:单例,指一个Bean容器 中只存在一份
  • prototype:每次请求创建新的实例,destroy方式不生效
  • request:每次http请求创建一个实例且仅在当前request内有效
  • session:同上,每次http请求创建,当前session内有效
  • global session:基于portlet的web中有效,如果是在web中,同session
Bean的生命周期:
  • 定义
  • 初始化
  • 使用
  • 销毁
Aware:
  • Spring中提供部分了一些以Aware结尾的接口,实现了Aware接口的bean在被初始化之后,可以获取相应资源
  • 通过Aware接口,可以对Spring相应资源进行操作(慎重)
  • 为对Spring进行简单的扩展提供了方便的入口
Bean的自动装配(Autowiring)
  • No:不做任何操作
  • byname:柑橘属性名自动装配.此选项将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配
  • byType:如果容器中存在一个与指定属性类型相同的bean,name将与该属性自动装配;如果存在多个该类型bean,那么抛出异常,并指出不能使用byType方式进行自动装配;如果没有找到相匹配的bean,则什么事都不发生
  • Constructor:与byType方式类似,不同之处在于它应用于构造器参数.如果容器中没有找到与构造器参数类型一致的bean,那么抛出异常
Resources(针对于资源文件的统一接口)
  • UrlResource: Url对应的资源,根据一个URL地址即可构建
  • ClassPathResource: 获取类路径下的资源文件
  • FileSystemResource: 获取文件系统里面的资源
  • ServletContextResource: ServletContext封装的资源,用于访问ServletContext环境下的资源
  • InputStreamResource: 针对于输入流封装的资源
  • ByteArrayResource: 针对于字节数组封装的资源
ResourceLoader:用于实现Resources
@Required:
  • @Required注解适用于bean属性的setter方法
  • 这个注解仅仅表示,受影响的bean属性必须在配置时被填充,通过在bean定义或通过自动装配一个明确的属性值
@Autowired:
  • 可以将@Autowired注解为"传统"的setter方法
  • 可用于构造器或成员变量
  • 默认情况下,如果找不到合适的bean将会导致autowiring失败抛出异常,可以通过下面的方式避免
    @Autowired(required=false)
  • 每个类只能有一个构造器被标记为required=true
  • @Autowired的必要属性,建议使用@Required注解
  • 可以通过添加注解给需要该类型的数组的额字段或方法,以提供ApplicationContext中的所有特定类型的bean
  • 可以用于装配Key为String的Map
  • 如果希望数组有序,可以让bean实现org.springframework.core.Ordered接口或使用的@Order注解
    注意:@Autowired是由Spring BeanPostcessor处理的,所以不能在自己的BeanProcessor或BeanFactoryPostProcessor类型应用这些注解,这些类型必须过XML或者Spring的@Bean注解加载
@Qualifier:
  • 按类型自动装配可能多个bean实例的情况,可以使用Spring的@Qualifier注解缩小范围(或指定唯一),也可以用于指定单独的构造器参数或方法参数
  • 可用于注解集合类型变量
  • 如果通过名字进行注解注入,主要使用的不是@Autowired(即使在技术上能够通过@Qualifier指定bean的名字),替代方式是使用JSR-250@Resource注解,他是通过其独特的名称来定义识别特定的目标(这是一个与所声明的类型是无关的额匹配过程)
  • 因语义差异,集合或Map类型的bean无法通过@Autowired来注入,因为没有类型匹配到这样的bean,为这些bean使用@Resource注解,通过唯一名称引用集合或Map的bean
  • @Autowired适用于fields,constructors,multi-argumentmethods这些允许在参数级别使用@Qualifier注解缩小范围的情况
  • @Resource适用于成员变量、只有一个参数的setter方法,所以在目标是构造器或一个多参数方法时,最好的方式是用于qualifiers
基于java的容器注解
  • @Bean标识一个用于配置和初始化一个由SpringIoC容器管理的新对象的方法,类似于XML配置文件的
  • 可以在Spring的@Component注解的类中使用@Bean注解任何方法(仅仅是可以)
  • 上一点中,通常使用的是@Configuration注解为配置文件

专题三 AOP

什么是AOP?
  • AOP:Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术
  • 主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等
AOP实现方式
  • 预编译----AspectJ
  • 运行期动态代理(JDK动态代理、CGLib动态代理)----SpringAOP、JbossAOP
    1
Spring框架中AOP的用途
  • 提供了声明式的而企业服务,特别是EJB的替代服务的声明
  • 允许用户定制自己的方面,以完成OOP与AOP的互补使用
Spring的AOP实现
  • 纯java实现,无需特殊的编译过程,不需要控制力加载器层次
  • 目前只支持方法执行连接点(通知Spring Bean的方法执行)
  • 不是为了提供最完整的AOP实现(尽管他非常强大);而是侧重于提供一种AOP实现和Spring IoC容器之间的整合,用于帮助解决企业应用中的常见问题
  • Spring AOP不会与AspectJ竞争,从而提供综合全面的AOP解决方案
有接口和无接口的Spring AOP实现区别:
  • Spring AOP默认使用标准的Java SE动态代理作为AOP代理,
  • 这使得任何接口(或者接口集)都可以被代理
  • Spring AOP中也可以使用CGLIB代理(如果一个业务对象并没有实现一个接口 )
Schema ---- based AOP:

Spring所有的切面和通知其都必须放在一个aop:config内(可以配置包含多个aop:config元素),每一个aop:config可以包含pointcut,advisor和aspect元素
(它们必须按照这个顺序进行声明)

Spring入门知识详解 Spring 框架是一个轻量级 Java 企业级应用开发框架,其核心设计理念是通过 IoC(控制反转)容器 和 AOP(面向切面编程) 来实现松耦合、高内聚的企业级应用开发。IoC 容器通过依赖注入(DI)机制自动管理对象的创建和依赖关系,开发者只需通过简单的注解(如 @Autowired)即可获取所需依赖,无需手动维护复杂的对象关系;AOP 则通过动态代理技术将横切关注点(如事务管理、日志记录、安全控制等)与业务逻辑分离,使用 @Transactional 等注解就能实现声明式事务管理等高级功能。 阅读详情

相关推荐

自己写的简单spring练手项目,适合新手

自己写的简单spring练手项目,适合新手

Spring入门,看这篇就够了

一篇对Spring入门案例演示的文章,仅供正在学习Spring的小伙伴们参考哟!

m0_54928777的博客 3870

wsl2内核版本和模块版本不一致解决方法

** /lib/modules/…build: No such file or directory错误解决办法这篇文章历时1个月整,从4月5日一直到5月5日,这一问题才得以解决。

m0_60634555的博客 5103

Spring入门基础

我们通常所说的 Spring 指的是 Spring Framework(Spring 框架),它是⼀个开源框架,有着活跃⽽庞 ⼤的社区,这就是它之所以能⻓久不衰的原因。Spring ⽀持⼴泛的应⽤场景,它可以让 Java 企业级的 应⽤程序开发起来更简单。而Spring的本质其实就是是包含了众多⼯具⽅法的IoC 容器。这里我们有两个关键字,一个是IoC,另一个则是容器。1.2 什么是容器容器是⽤来容纳某种物品的(基本)装置。比如我们Java中常用的List/Map就是一种数据存储容器。

weixin_60778429的博客 3373

HSmartWindowControl vs HWindowControl:Halcon老鸟教你如何根据项目需求选对控件(附性能对比)

本文深度对比Halcon图像处理中的HSmartWindowControl与HWindowControl控件,从性能、内存占用和交互体验等维度提供选型建议。HSmartWindowControl在硬件加速渲染、智能内存管理方面表现优异,特别适合医疗影像和工业检测等高性能需求场景,而HWindowControl则更适合兼容旧系统和资源受限环境。

weixin_30765505的博客 469

深入傅里叶级数与傅里叶变换:从基础到应用

傅里叶分析为我们提供了一种理解信号频率结构的强大工具。从傅里叶级数到傅里叶变换,再到快速傅里叶变换(FFT),其理论与应用紧密结合,对现代科学技术的发展意义非凡。如果你对信号处理、数据分析或工程计算感兴趣,傅里叶分析是必须掌握的基础工具。希望本文能帮助你对傅里叶分析有更深入的理解!如果有问题或想法,欢迎在评论区讨论!

qq_56683019的博客 3523

Spring快速入门超详细讲解

在Spring框架规范中,所有由spring管理的对象都称之为Bean对象。Spring提供了以下多个注解,这些注解可以直接标注在java类上,将它们定义成Spring Bean。注解说明@Component该注解用于描述Spring中的Bean,它是一个泛化的概念,仅仅标识容器中的一 个组件(Bean),并且可以作用在任何层次,例如Service层、Dao层等,使用时只需将该注解标注在相应的类上即可。

南 阳 的博客 5088

Python 爬虫进阶:爬取 APP 数据(Charles 抓包 + Requests)

本文详细介绍了APP数据爬取的完整技术方案。首先通过Charles抓包工具配置HTTPS代理和证书,解析APP通信协议;然后分析请求参数、反爬机制和动态签名生成规则;接着使用Python的Requests库实现模拟请求、分页爬取和数据存储;最后针对证书问题、Token失效等常见问题提供解决方案。文章强调抓包分析、参数逆向和请求模拟三大核心技术,同时提醒开发者需遵守法律法规,合理控制爬取频率。该方案适用于移动端数据采集场景,为无法直接获取网页数据的情况提供了有效解决方案。

2503_91057718的博客 2120

全网最详细的Spring入门教程

其实spring的来源就是一个词语,完全解耦,为什么叫做完全解耦,还得从两个类的调用说起,接口1的实现类,我们叫做类1,接口2的实现类,我们叫做类2,现在我们有一个前提条件,就是,类2里面去new类1,且把类1的方法给到类2使用,我们现在形容类2和类1有依赖关系,也就是类2要依赖类1,那么如果出现一个境况也就是如果类1发生了改变,那么我们如何去使用类2,那我们在使用类2的时候就需要去改变类2里面的代码,一方面需要从新new一次类1,二方面需要把类2里面的方法对应新的类1的方法。我们采用set注入的方式。

YoYoYoWhatIsUp的博客 3576

YOLO创新点改进点的消融实验设计规范

YOLO改进的消融实验是一种重要的方法,用于评估和验证模型中不同组件的影响。在进行YOLO改进的消融实验时,我们可以选择一些可能的改进点,比如Backbone网络、Anchor框设计和损失函数设计,然后通过实验来分析它们对模型性能的影响。首先,我们需要确定实验设计。对于每个改进点,我们将设计多个实验组,并针对每个实验组训练模型并进行性能评估。这里以三个改进点为例进行说明:改进点1:Backbone网络 (改进点2:Anchor框设计 (改进点3:损失函数设计 (

crasher123的博客 2909

第154章 点云大规模并行处理(GPU加速)

优化点云处理✨ 使用。

yumeiguo的博客 374

Spring AI——入门介绍

本文介绍了 Spring AI 的基础使用。

代码星辰的博客 1万+

在实车上进行lio-sam测试

PS:将雷达和imu相对固定后,拆下来,原地晃啊晃,直到xyz进度达到百分百,参考gif。标定完成后,会在result文件夹下生成result.txt。

如果想成为中心,那么就到中心去吧。 997

《Spring Boot最强学习全家桶神器!100+实战案例打包带走,从入门到跳槽加薪!》

还在为学 Spring Boot 找不到靠谱案例发愁?这份 spring-boot-examples 堪称 “保姆级学习神器”,从 Web 开发到消息队列,从 Banner 定制到定时任务,10 + 高频场景案例直接抄作业!代码全、步骤细,零基础也能轻松入门,进阶开发者更能查漏补缺,速来解锁 Spring Boot 的正确打开方式!✅ ​。

2502_92445108的博客 620

【考试大纲】中级多媒体应用设计师考试大纲

中级多媒体应用设计师考试大纲

邓邓子的博客 382

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

spring security入门

Spring Security基于servlet过滤器实现的权限管理框架,是AOP思想的具体体现,提供了完善的认证机制和方法级的授权功能。 <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>5.3.1.RELEASE</ve

mh_dream的博客 3058

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

《Spring Boot最强学习全家桶!100+实战案例打包带走,从入门到跳槽加薪!》

还在为学 Spring Boot 找不到靠谱案例发愁?这份 spring-boot-examples 堪称 “保姆级学习神器”,从 Web 开发到消息队列,从 Banner 定制到定时任务,10 + 高频场景案例直接抄作业!代码全、步骤细,零基础也能轻松入门,进阶开发者更能查漏补缺,速来解锁 Spring Boot 的正确打开方式!✅ ​。

分享好用且智能的开源项目。 912

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

《Spring Boot最强学习全家桶开源项目!100+实战案例打包带走,从入门到跳槽加薪!》

还在为学 Spring Boot 找不到靠谱案例发愁?这份 spring-boot-examples 堪称 “保姆级学习神器”,从 Web 开发到消息队列,从 Banner 定制到定时任务,10 + 高频场景案例直接抄作业!代码全、步骤细,零基础也能轻松入门,进阶开发者更能查漏补缺,速来解锁 Spring Boot 的正确打开方式!✅ ​。

2501_92469880的博客 1278

SpringBoot入门程序超详细,创建项目过程,引入依赖配置,连接数据库执行DQL,进行SpringBoot项目概述和入门程序及引入依赖详解【对新手小白超友好】

解决了刚学习Springboot项目配置的困扰,本篇文章给刚刚学习springboot的同学一个参考,包括创建项目,配置maven仓库,引入依赖参考,创建项目结构,连接数据库和配置连接信息等

qq_67947670的博客 945

Spring Boot 整合 MongoDB:分页查询详解 (新手友好)

Spring Boot 整合 MongoDB:分页查询详解 (新手友好)

m0_63949203的博客 2005

软件工程毕业设计论文实战:基于 Spring Boot 的新手友好型系统搭建指南

面对传统的 SSM(Spring + Spring MVC + MyBatis)框架和裸写 Servlet,Spring Boot 对于新手来说优势是碾压性的。开箱即用,简化配置:Spring Boot 提供了大量的“Starter”依赖,你需要什么功能(如 Web、数据库、安全等),就引入对应的 Starter,绝大部分配置都已经自动完成。你再也不需要写繁琐的 XML 配置文件了,这极大地降低了入门门槛。内嵌容器,独立运行。

2600_94960196的博客 660

JavaEE进阶——Spring原理深度解析:新手必懂的作用域详解(新手友好版)

本文详细解析了Spring框架的核心原理,包括Bean的作用域、生命周期和SpringBoot自动配置机制。通过代码示例展示了单例(singleton)、原型(prototype)等不同作用域的实现方式,以及Bean从实例化到销毁的完整生命周期过程。深入剖析了SpringBoot自动配置的底层实现,从@SpringBootApplication注解开始,逐层拆解了@EnableAutoConfiguration、AutoConfigurationImportSelector和spring.factories

道冲而用之或不盈,渊兮似万物之宗。 804

Spring MVC的异常处理和友好页面

Spring MVC详细环境配置和入门 Spring MVC 响应数据和结果视图 SpringMVC实现三种文件上传的方式 实现之前把Spring MVC环境配置完成,参考以上文章 SpringMVC的异常处理和友好页面1.异常处理1. 异常处理思路2. SpringMVC的异常处理1. 自定义异常类2. 自定义异常处理器3.error.jsp4.controllser,模拟异常3.配置异常处理器2.404友好页面处理404.jsp3. 运行截图异常处理404友好页面github源码地址 1.异常处理

欢迎你的到来,我们一起加油!!! 1103

Spring的底层搭建原理讲解,做开发的都可以看看,对新手极为友好

1、看视频进行系统学习这几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。2、读源码,看实战笔记,学习大神思路“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。

2301_78416543的博客 662

初识Spring(AOP、IOC和DI)——对新手友好♥♥♥

初识Spring容器 继承体系(有点复杂,简单工厂模式) 本篇博客主要简单介绍Spring的环境搭建,spring特点、优势,以及AOP(面向切面编程),IOC(控制反转)和一些spring的面试基础题。 什么是Spring 度娘走一波(嘿嘿♥) Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大I

cout_s的博客 349

Spring Boot 入门指南:从基础到实战(初学者友好版)

本文是SpringBoot入门指南,重点讲解其核心价值和快速上手方法。SpringBoot解决了传统Spring开发中配置繁琐、依赖冲突、部署复杂等痛点,通过自动配置、起步依赖和内嵌服务器等特性简化开发流程。文章详细演示了如何在10分钟内搭建第一个SpringBoot项目,包括项目创建、接口编写、配置管理等基础操作,并通过用户CRUD案例展示实际开发流程。最后总结了初学者常见错误及解决方案,帮助开发者快速掌握SpringBoot的核心能力,为后续学习微服务开发打下基础。

2201_75941872的博客 915
上一篇: 前端开发学习常用网站及介绍(只有你想不到)
下一篇: Spring常见面试题总结(超详细回答)
JavaPorter
博客等级 码龄7年 10粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值