Spring入门1

第 1 章 spring基础入门 导读: 本套笔记主要基于spring5,介绍spring基础内容,包括Ioc、Aop、springMVC、spring基础注解开发。笔记通俗易通,每一个知识点都会给出相应案例。后期还会更新spring高级内容。 第 1 章 spring基础入门 1.1 spring介绍 1.1.1 什么是spring Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IoC(控制反转)和 AOP(面向切面编程)为内核。提供了展现层 SpringMVC和持久层 Spring JDB. 阅读详情
/**
问题
spring_day01
1.如果根据类型获取,配置了多个类型的话,则抛出异常 √
2.applicationContext.xml配置文件中设置约束?
3.实例化Bean的三种方式:
1.常用
2.3一些框架初始化用
在哪里使用?
4.继承中方法,属性
5.1.OGNL 主要操作struts2值栈?在动态sql中使用OGNL表达式
2.EL表达式:操作servlet相关的一些对象和相关的值
  3.spEL表达式:操作bean
6.静态工厂方法和实例工厂方法的配置方法为啥不同?

*/


Spring:是分层的,javaSE/EE 一站式(full-stack),轻量级开源框架


1.javaEE分层
表现层(页面数据显示,页面跳转调度),例如jsp/servlet
业务层(业务处理和功能逻辑,事物控制),例如service
持久层(数据存取和封装,和数据库交互),例如dao,mapper


Web表现层(servlet,jsp,struct2,springmvc)
Business业务层(JavaBean,EJB(企业级JavaBean))
EIS集成层(持久层)(jdbc,hibernate,mybatis,数据库的crud操作)

2.一站式
Spring 提供了JavaEE各层的解决方案
表现层:struct1,struct2,spring MVC
业务层:Ioc,AOP,事物控制
持久层:jdbcTemplate,mybatis,springDataJpa框架(对象关系映射)整合


3.轻量级
?

Spring 的体系结构
1.Spring一个分层架构,包含约20个模块的功能要素。
Spring Framework Runtime
1.Data Access/Integration(JDBC,ORM,OXM,JMS,Transactions)
2.Web(WebSocket,Servlet,Web.Portlet)
3.core Container(Beans, Core, Context, SpEl)
4.Test, AOP, Aspecs, Instrunentation, Messaging


1.核心容器(Core Container)包括(Core, Bean, Context, EL模块)
1.core和Beans模块提供了Spring最基础的功能,这里基础概念是BeanFactory,
功能: 1.提供[IoC]和[依赖注入特性]
2.它提供对Factory模式的经典实现来消除对程序性单例模式的需要,
并真正地允许你从程序逻辑中分离出依赖关系和配置。
2.Context模块基于Core和Bean构建


3.Expression Language 表达式语言模块


2.Data Access/Integration 数据库访问/集成部分
1.JDBC模块
2.ORM模块  提供“对象/关系”映射APIs的集成层(JPA,JDO,Hibernate,iBatis)
利用ORM封装包,可以混合使用所有Spring提供的特性进行“对象/关系”
映射
3.OXM模块,提供一个支持Object和XML进行映射的抽象层
4.JMS模块,
5.Transaction模块,支持程序通过简单声明事物管理

3.Web
1.Web模块,提供基础的Web功能,。例如多文件上传,xxxx
2.Web-Servlet模块,提供了Web应用的Model-View-Controller(MVC)实现
3.Web-Portler模块,提供了在Portler环境下的MVC的实现。

4.AOP
1.AOP模块,提供符合AOP联盟规范的面向方面的编程实现,让你可以定义如方法拦截器和切入点
2.Aspects模块,提供了AspectJ的集成
3.Instrumentation模块,提供一些类级的工具支持和ClassLoader级的实现

5.Test
1.Test模块,提供使用Junit和TestNG来测试Spring组件的支持。


# IoC控制反转的实现(Inverse of Control)
解决代码耦合问题
引入工厂(第三者),将原来在程序中手动创建管理的依赖的UserDaoImpl对象,
交给工厂来创建管理
IoC底层实现:工厂设计模式+反射机制+配置文件(xml)

# DI依赖注入的实现
DI:Dependency Injection 依赖注入,在spring框架负责创建Bean对象时,动态的将依赖
对象注入到Bean组件(简单的说,可以将另外一个Bean对象动态的注入到另外一个Bean中)
* IOC:控制反转,将对象创建管理的权利交给spring容器,对象通过spring工厂创建
* DI:在spring容器中创建管理多个对象,通过property标签,将对象注入到需要依赖的对象中
* 例如:本例中  userDao对象注入到了userService对象中,效果只要userService
* 在spring工厂创建后,userDao也同时可以被引用

/* 
IOC(控制反转):
控制:控制了对象的创建管理的权利,通过spring容器(即Application),对象通过spring工厂创建
DI(依赖注入):
在applicationContext.xml容器中,使用property标签,将需要的对象依赖注入到对应的对象中。
实现的依赖对象,和被依赖对象的同时创建?
*/


Spring的工厂(了解)
# applicationContext意为应用上下文。
作用是:用来加载spring框架的配置文件,来构建Spring的工厂对象,它为Spring容器的上下文对象,也
被称为Spring容器

/*
applicationContext被称为Spring容器的上下文对象:
ApplicationContext ac = new ClassPathXmlApplicationContext("applictionContext.xml");
Object object = ac.getBean(id/name);
上:ac从配置文件中(xml)获取对像创建的相关信息.
下:通过ac创建了对象
含义:从配置文件到项目创建对象的上下文
*/


# ApplicationContext 只是 BeanFactory(Bean工厂,Bean就是一个java对象) 一个子接口


# ApplicationContext 是对 BeanFactory 扩展 ,提供了更多的功能


# BeanFactory 采取的是延迟加载,第一次getBean时才会初始化
用法:
BeanFactory bf = new XmlBeanFactory(new FileSystemResource(D:\\applicationContext.xml"));
# ApplicationContext 更为强大,所以现在开发基本没人使用BeanFactory.


# 实例化Bean的三种方式
/*
1.无参构造器
上述所有bean的实例的方式
2.静态工厂方法
1.创建一个BeanFactory类
里面有这一个静态方法:用来返回对象的实例(当配置文件引用到静态工厂类时,当指定
factory-method=“工厂类中静态方法”,自动调用该静态方法,返回对象的实例)
用途:spring容器在实例化工厂类的时候,即可以初始化其他对象的代码?
3.实例工厂方法
1.创建工厂类
里面是一个普通方法,用来返回对象的实例
<bean id="bean3" factory-bean="bean3Factory" factory-method="getBean3"/>
当要在spring中调用bean3时,相当于引用了bean3Factry,再调用其中的getBean3方法
返回示例对象,从而实现了bean3的实例化
个人:静态工厂方法和实例工厂方法的配置方法为啥不同:
不同点:
1.静态工厂是直接将自己的全路径类名,给需要实例化的bean,再调用自己的静态方法。
2.实例工厂是当反射创建bean时,bean引用了实例工厂类来实例化对象。

*/


# Bean 的作用域
  由spring创建的bean对象在什么情况下有效
  类别  singleton:在Spring IoC 容器中仅存在一个Bean实例,Bean以单例方式存在
prototype:每次从容器中调用Bean时,都返回一个新的实例,即每次调用getBean()时,都相当于执行
new XxxBean()
/*
总结:singleton:单例,在spring容器初始化,时bean初始化,每次获取的对象都是同一个值
  prototype:多例,在getBean的时候初始化,每次获取的bean不是同一个值。
  
注意:singleton单例类型,即使是没有调用getBean创建该类的对象,该对象也会初始化值。
初始化的体现,构造函数的执行
原因:在spring容器初始化的时候,singleton单例类型的bean就已经初始化
*/


# Bean的生命周期
/*
在xml配置文件中指定bean中初始化,销毁的方法
生命周期必然包括(初始化,销毁)
初始化:xml:init-method  = "对应bean中的初始化方法名"
销毁:xml:destroy-method = "对应bean中的销毁方法名"
注意:只有作用域类型为singleton单例类型的bean才可以手动调用方法删除
*/


# Bean属性的依赖注入
/*
2种方式(构造器注入,setter属性注入)
1.构造器
标签<constructor-arg>
2.setter属性
标签<property>
<ref>赋值的对象时bean
简单地说:就是初始化时,给需要的bean赋值
*/


# p名称空间的使用
/*
spring2.5版本开始引入的新的p名称空间
基于setter属性依赖注入中的property标签的改进
通过在beans标签引用xmlns:p="http://www.springframework.org/schema/p"
通过特定的规则
p:<属性名>="xxx" 引入常量值
p:<属性名>_ref="xxx" 引用其它Bean对象
来简化代替property标签
*/


# sqEL表达式
/*
spring expresion language 表达式语言
spring3.x版本的新特性
常见的用法:
#{bean} 引用bean
#{bean.value} 引用bean的属性
#{bean.function()} 引用bean的方法
运算:
#{1+1}
字符操作:
#{“tom”.toUpperCase()}
.....
使用范围:
(操作bean相关的)
applicationContext.xml配置文件内的bean标签内用来查询bean对象的数据,配合着
p名称空间使用共同为bean对象赋值。
*/


/*
DI(dependency injection);依赖注入
1、bean注入(在一个bean中注入其他bean的信息)
*本bean为标签内的bean,外bean为注入的bean对象
bean标签类使用<property> :根据类中的setter方法进行注入
name:一般为命名外bean的id/name,最终按实际在本bean中书写的setter的方法名为准
例如:本bean中setter方法的后缀名小写,如setterXxx 对应位 name:xxx.
ref : 引用一个bean对象,值为id/name

* p名称空间代替<property>标签


2、bean属性注入(在一个bean中注入信息)
a、setter注入
使用<property>标签
name:该bean的setter方法后缀名小写,如SetXxx-那么name的属性值为xxx。
value:简单的数据
ref:复杂的数据 (引用其他bean)

* p名称空间代替<property>标签
p:<属性名>="xxx" 引入常量值
p:<属性名>_ref="xxx" 引用其它Bean对象
b、constructor注入
使用<constructor-arg>
定位属性:index name type
简单赋值属性: value
复杂赋值属性: ref
*/

Spring Boot入门篇 | Spring Boot 1 一、什么是Spring Boot Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,就是 Spring Boot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 Maven 整合了所有的 Jar 包,Spring ... 阅读详情

相关推荐

Spring Security 6.x 系列【28】授权服务器篇之Spring Authorization Server 1.0 入门案例

在前几篇文档中,我们学习了OAuth 2.0协议,并使用完成了基于授权码模式的第三方平台登录功能。OAuth 2.0中的四大角色,原生框架已经帮我们实现了资源所有者、客户端、资源服务器,那么Spring是否提供了授权服务器的实现呢?在OAuth 1.0时代,Spring组织已经开始开发基于对OAuth的支持,该框架就是。其实现了大部分的OAuth规范,并提供了资源服务器、客户端和授权服务器。

记录知识、锤炼自我 8366

Spring Boot 学习之路——1 入门demo

前言:使用Spring Boot已有一年多时间,却从未静下心来总结,今天抽空写个傻瓜式教程,巩固一下。Spring Boot的主要优点:为所有Spring开发者更快的入门开箱即用,提供各种默认配置来简化项目配置内嵌式容器简化Web项目没有冗余代码生成和XML配置的要求(Spring 4可实现零配置)入门demo很简单,实现一个简单的Http 请求处理。废话不说看截图。IDE : IntelliJ ...

只是一只程序媛 1400

第1章 Spring Boot入门

第1章 Spring Boot入门 1.1 Spring Boot概述 Spring Boot是由Pivotal团队提供的基于Spring的全新框架,旨在简化Spring应用的初始搭建和开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。Spring官网给的定义是:Spring Boot是所有基于Spring开发项目的起点。 Spring Boot集成了绝大部分目前流行的开发框架,就像Maven集成了所有的JAR包一样,Spring Boot集成了几乎所有的框架,使得开发者能

六指琴魔 833

Spring AI 1.0 快速入门

其他模型如百度文心一言、MiniMax、Azure 等,只需更换对应的 starter。只需替换依赖和配置即可切换不同大模型。返回结果会是 AI 回复的内容。

程序员陆通 1296

飞塔防火墙认证绕过漏洞(CVE-2022-40684)深度剖析与实战复现

本文深度剖析了Fortinet飞塔防火墙高危认证绕过漏洞CVE-2022-40684的原理与影响。该漏洞允许攻击者通过构造包含特定Forwarded头和User-Agent的HTTP请求,无需凭证即可绕过认证,以管理员身份访问设备。文章详细演示了从环境搭建到实战复现,最终植入SSH密钥获取控制权的完整过程,并提供了漏洞挖掘技巧与关键防御建议。

d6e7f8g9h的博客 708

告别复杂配置!5分钟在Vue/React项目中集成讯飞语音听写WebSocket API

本文详细介绍了如何在Vue/React项目中快速集成讯飞语音听写WebSocket API,实现高效语音识别功能。通过对比不同通信方案,突出WebSocket在实时语音交互中的优势,并提供框架适配、音频处理及性能优化等关键技术点,帮助开发者5分钟内完成专业级语音听写功能集成。

weixin_28730353的博客 274

Spring Security 3.1.3最小入门配置及实例下载

因为公司项目要用spring security管理权限,但是作为一个极其标准的菜鸟,只最略微接触了一些spring的东西,基本不算入门,研究了一整天才做出了最简单的demo,有基础了想提高的大牛们就不用往下看了,这个是最最基本的入门配置,附有实例下载,算是给那些也从来没有接触过的和我一样的菜鸟们吧。 这个例子全部都是配置出来的,没有用到任何JAVA代码,我想既然是学,对于新手来说把最简单的东西弄

匠柒 2140

使用JAVA 的 POI 库 将DOC文件转为DOCX文件

java使用POI库,将doc文件转为docx文件

qq_45808266的博客 5702

Spring Boot 2.1.0 快速入门指南

Spring Boot 2.1.0 快速入门指南 项目介绍 Spring Boot 是一个用于简化 Spring 应用初始搭建以及开发过程的开源框架。它通过提供默认配置的方式来简化项目的初始配置,使开发者能够更快地启动新项目。Spring Boot 2.1.0 是该框架的一个版本,它包含了许多新特性和改进,旨在进一步提高开发效率和应用性能。 项目快速启动 环境准备 在开始之前,请确保您的开发环境已...

gitblog_00556的博客 1015

2021哈工大网安837考研初试经验贴

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

weixin_41797880的博客 6522

ABAP CDS Time Functions 全面解析:用 TIMS_IS_VALID 护航时刻字段的正确性

摘要:本文深入解析ABAP CDS时间函数TIMS_IS_VALID的应用,重点介绍其在企业系统时间字段校验中的关键作用。文章指出无效时间数据会导致业务流程混乱,而CDS层校验能有效减少重复逻辑。详细说明TIMS类型格式要求、空值处理规则,并提供两种工程实现方案:在CDS视图中直接派生校验列,或通过ABAP SQL在内存表中批量验证。最后给出可直接运行的代码示例,包括一个ABAP报表演示内存表验证,以及一个CDS View Entity实现系统时间自动映射与校验,帮助开发者在业务场景中快速落地时间校验功能。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 193

1.Spring入门

1.1 Spring简介Spring Framework 6.0于2022年11月正式发布,这是 2023 年及以后新一代框架的开始,包含 OpenJDK 和 Java 生态系统中当前和即将到来的创新。Spring Framework 6.0 作为重大更新,要求使用 Java 17 或更高版本,并且已迁移到 Jakarta EE 9+。基于这些变化,Spring Framework 6.0 支持最新的Web 容器,如 Tomcat 10,以及最新的持久性框架 Hibernate ORM 6.1。

超级小狗的博客 2051

《UDS协议从入门到精通》系列——图解0x2E:通过ID写数据

图解数据包格式+直观的通信示例,迅速认识0x2E服务!!

车载系统攻城狮 3602

1 Spring入门及介绍

从上面的介绍中,我们可以看到Spring框架主要的优势是在`简化开发`和`框架整合`上,至于如何实现就是咱们要学习Spring框架的主要内容: * 简化开发: Spring框架中提供了两个大的核心技术,分别是: * ==IOC== * ==AOP== * ==事务处理== 1.Spring的简化操作都是基于这两块内容,所以这也是Spring学习中最为重要的两个知识点。 2.事务处理属于Spring中AOP的具体应用,可以简化项目中的事务管理,也是Spring技术中的一大亮

2301_76721962的博客 786

知识存储之Apache Jena

知识图谱的存储可以分为基于表结构的存储和基于图结构的存储。1️⃣基于表结构的存储基于表结构的存储利用二维的数据表对知识图谱中的数据进行存储。根据不同的设计原则,知识图谱可以具有不同的表结构:💨知识图谱实质上是一个个的三元组,一种简单直接的存储方式是设计一张三元组表用于存储所有三元组,有不少比较成熟的产品利用该形式存储知识图谱,包括Jena、Oracle、Virtuoso等。💨为每种类型构建一张表,同一类型的实例存放在相同的表中。

Puzzle的博客 6064

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Spring AI 1.x 系列【2】入门案例

本文介绍了使用Spring AI集成DeepSeek大模型的开发过程。首先明确了环境要求:JDK 17-25、Maven 3.6.3+和Spring Boot 3.5.11。然后创建了Spring Boot项目工程,通过父POM管理依赖版本。接着详细说明了获取DeepSeek API密钥的步骤,并展示了如何引入spring-ai-starter-model-deepseek依赖。最后演示了配置DeepSeek连接信息、创建对话客户端以及测试对话功能的完整流程,成功实现了与大模型的交互。

记录知识、锤炼自我 1009

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Spring AI 1.1.7快速入门

SpringAI是基于Spring生态的AI集成框架,需要JDK17环境。主要功能包括:1)通过ChatClient构建prompt对话系统,支持system/user/assistant三种角色;2)使用ChatMemory管理对话上下文,默认保留10条消息;3)通过Flux实现流式输出;4)提供会话历史存储功能。配置方面需设置API密钥和模型参数,支持Kimi等大模型。典型应用场景包括:基础对话、会话记忆、历史记录查询等,可通过AOP增强日志输出。该框架简化了AI功能集成,适合构建智能对话系统。

xingchendai2023的博客 1271

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【Spring AI 1.0.0】Spring AI 1.0.0框架快速入门(2)——Prompt(提示词)

【Spring AI 1.0.0】Spring AI 1.0.0框架快速入门(2)——提示词

Hanson的博客 1765

Spring入门第1天--IOC快速入门

Spring框架学习路线 Spring框架的概述 Spring的核心 Spring优点 Spring体系结构 Spring的快速入门 Spring框架加载配置文件 IOC容器装配Bean Spring框架Bean实例化的方式 Bean的生命周期 Bean中属性注入—基于XML方式 Bean的属性注入—基于注解方式 Spring3.0可以使用Java类提供Bean定义信息 Spring整合web开发 Spring集成J

lutianfei的专栏 1万+

【Spring 6】- 1 - Spring入门

文章摘要 本文探讨了Spring框架如何帮助解决软件开发中的核心原则问题。首先分析了传统代码结构中违背OCP(开闭原则)和DIP(依赖倒置原则)的问题,展示了如何通过数据库切换导致的连锁修改。然后介绍了七大软件设计原则,重点解释了IoC(控制反转)概念,说明Spring框架如何接管对象的创建和关系维护,从而符合这些设计原则。文章阐述了控制反转的两个核心方面:将对象创建和关系的管理权移交给框架,强调了这种编程思想对实现松耦合、可扩展系统的重要性。

Zzz2608440484的博客 1365

1_Spring入门

Spring入门_黑马SSM系列课程笔记,仅供参考,持续更新

qq_61831983的博客 190

Spring入门chapter1

spring的简单入门: 一、简介 1、Spring是Spring全家桶中的一员,Spring全家桶:spring、spring mvc、spring boot 、spring cloud等等,如下图;学好spring将有助于后续的继续学习! Spring减轻了对 类和类之间 以及 项目模块 的管理, 帮助开发人员创建对象,管理对象之间的关系。 spring框架的一些特点也可以在官网中看到: 也可以查看官网提供的spring框架的API文档: 点击查看Spring Framework相关API文档

方方土的博客 197
上一篇: 无法在类类org apache logging log4j core appender RollingFileAppender中调用工厂方法
下一篇: Xshell/Xftp 连接不上虚拟机上的linux系统原因之一
悟道|养家
博客等级 码龄8年 33粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值