当前位置: 首页 > news >正文

Spring笔记()

spring理念:简化企业级开发,就是个大杂烩

Spring Maven项目导spring-web-mvc依赖,可以导其他需要的依赖

Spring优点:开源免费的容器(框架)

轻量级,非入侵的框架(引入不会改变代码的情况)

IOC,AOP

支持事务,对框架整合的支持

IOC

ioc是一种设计思想

之前是程序创建对象,控制权在程序员手上,使用了set方法后,程序不在具有主动性,二十变成了被动的接受对象

这种思想从本质上解决了问题,我们程序员不用再去管理对象的创建了。系统的耦合性大大降低,可以更加专注在业务的实现上!这是IOC的原型

反转:程序本身不创建对象,变成被动的接收对象(来自Spring)

依赖注入:就是通过set方法注入的

IOC是一种编程思想,由主动的编程变成被动的接收

通过newClassPahXmlApplicationContext

ok,到了现在,我们彻底不用再去程序中改动了,要实现不同的操作,只需要在xml配置文件中进行修改。IOC一句话就是对象由Spring创建,管理,装配

IOC创建对象的方式

1.默认用无参构造

2.使用有参构造<constructor-arg>

1.下标赋值

2.类型

3.参数名(推荐)

IOC总结

在配置文件加载的时候,容器中管理的对象就已经初始化了,并且是一个对象(单例)

Spring配置

别名

<bean name> name也可以取别名

<import>引入其他的Spring配置文件 applicationContext.xml

依赖注入(DI)

构造器注入

set方法注入

依赖注入:set注入!

依赖:bean创建依赖于容器

注入:bean对象中所有属性值,由容器注入

<value>(基本数据类型)<ref>(引用数据类型),Map,List,Propertis等类型在<property>中有对应标签

拓展方式注入

p命名空间:可以直接 p:属性名 注入属性值

c命名空间 c:构造器入参名,通过构造器注入

注意:需要在配置文件导入约束

bean的作用域

<bean scope>:bean标签中scope

singleton:单例模式(默认)

prototype:每次从容器get都是新对象

其余的request,session,applicaiton在web开发中才用的到

Bean的自动装配

自动装配是Spring满足bean依赖的一种方式,Spring会在上下文中自动寻找,并自动给bean装配属性

在Spring中的三种装配方式

1.在xml中显示配置

2.在java中显示配置

3.隐式的自动装配(重要)byname(根据bean的id,id和属性的set方法的值一致),byType(根据bean的class的类型)

注解实现自动装配@Autowired等注解

@Autowired:配置文件需要加context头文件 和 <context>标签

@Autowired:通过类型找 @Qualifier:通过name(bean标签里的id)找

@Autowired

@Qualifier(value= "xxx") 等于 @Resource

@Resource:先找name,找不到找类型

@Nullable:可为null

@Componet @Repository @Service @Controller

四个注解都是自动装配bean,分别用于pojo,dao,service,controller层

使用时要在xml加配置和头文件

使用java配置Spring

类上加@Configuration注解: 用AnnotationConfigApplicationContext来获取容器对象(applicationContext)

类上加@Configuration注解,方法上加@Bean,类上还可以加@Scope,@Import,@ComponentScan等

AOP

SpringAOP的底层就是代理模式

分为静态代理和动态代理

你找房东租房子,中介就是代理,代理会进行一些其他附属操作,比如看房子,收中介费

静态代理角色分析:

抽象角色(时间):租房,一般使用接口或抽象类来解决

代理角色:中介,中介替房东做了

真实角色:房东被代理了

客户:我,我是访问代理角色的人

代理模式的好处

使真实角色的操作更加纯粹,无需关注公共的业务

公共业务交给代理角色,实现了业务的分工

公共业务发生变化时,方便集中管理

缺点:

一个真实角色就需要一个代理角色,代码量大效率低

动态代理

动态代理的代理类是动态生成的,分为基于接口的动态代理(JDK动态代理),基于类的动态代理(cglib),java字节码实现javassist

好处:一个动态代理类可以代理多个类,只要是实现了同一个接口

需要了解两个类,Proxy,InvocationHandler

Proxy:获得动态代理类

InvocationHandler:实现这个类 ,处理代理实例返回结果

Spring动态代理:

方式1:配置文件配置<aop>,实现接口,比如MethodBeforeAdvice

方式2:自定义类实现aop,主要是切面

方式3:注解实现:@Aspect@Before,@After,@Around等等,需要注入bean,配置文件用标签开启自动代理支持

Spring整合Mybatis

整合后使用sqlSessionTemplate来执行

两个核心对象:sqlSessiongFactory,sqlSessionTemplate

Spring中的事务管理

声明式事务(AOP),编程式事务(在代码中进行管理)

配置声明式事务:

1.标签配置开启声明式事务 datasourceTransactionManager

2.<tx:advice>配置,配置事务的传播特性:propagation=required(默认)

Spring总结:
http://www.jsqmd.com/news/602951/

相关文章:

  • 【紧急预警】C++27标准草案Final Draft已冻结!再不掌握协程调试新范式,2025项目将全面崩溃
  • 基于单细胞测序技术的细胞通讯分析方法及其应用
  • 别再只比精度了!手把手教你用YOLOv5和v7在自定义数据集上做训练优化
  • 从原理到实战:深入解析位置式、增量式与串级PID的工程实现
  • 利用快马平台AI,十分钟快速构建个人博客网站原型
  • 2026全国TOP5回收公司推荐|机械设备/电脑/配电柜/废旧金属回收 - 深度智识库
  • BrupSuite密码爆破实战:从入门到高级技巧
  • 2026年,我们这样搞定毕业论文:百考通AI四大功能实测
  • 2026 年新媒体营销服务平台综合实力:传声港系列稳居榜首,传新社跻身前五 - 博客湾
  • 学术写作必备:TexStudio中如何优雅地添加PDF行号(附编辑器行号设置)
  • 2026届必备的AI辅助论文平台解析与推荐
  • HMCL-PE终极指南:移动端Minecraft全功能管理与效率优化秘籍
  • 基于R语言的自动数据收集:网络抓取和文本挖掘实用指南【1.1】
  • Vue3 响应式系统中的 Effect 作用域是什么?教你如何批量管理副作用
  • 2026网文圈变天!顶配AI写小说神器实测:除了炼字工坊,全是虚火?
  • AI辅助开发:让快马平台Kimi模型帮你编写狼蛛f87pro键盘的智能配置逻辑
  • 从质检到售后,揭秘口碑最佳的热洁炉制造商 - 品牌推荐大师
  • 如何突破设计开发壁垒?Figma-HTML实现网页到设计稿的无缝转换
  • 2026年说说长沙实力强的单位搬家公司,怎么收费 - myqiye
  • QDKT-Skill的概念和原理+Skill开发实践
  • 效率倍增:用快马平台自动化测试openclaw多模型性能
  • 2026年一乙醇胺/三乙醇胺/三乙胺化工原料厂家推荐:二甲基甲酰胺/二乙醇单异丙醇胺/二乙醇胺专业供应商 - 品牌推荐官
  • 2026年靠谱的钢结构夹层厂家Top10,西安华隆房屋建设入选 - 工业品牌热点
  • 终极Windows右键菜单优化指南:如何用ContextMenuManager彻底清理杂乱菜单
  • 【仅限首批200名工控安全工程师】:获取NASA JPL与中核集团联合发布的《工业C++安全开发检查清单v3.1》(含静态分析规则集+CI/CD嵌入脚本)
  • Qwen3-TTS开源大模型实操:批量处理CSV文本并生成多语种MP3音频的Python脚本
  • 意识上传禁忌:首位完整扫描大脑的科学家自白
  • 2026年宁夏地区钢结构夹层靠谱供应商排名,专业服务企业全梳理 - 工业推荐榜
  • 陕西顺欣昌隆物资回收:废旧物资回收领域的稳健领航者 - 深度智识库
  • LeetCode 9. 回文数:两种高效解法详解