面试——Spring特性

【CASS精品教程】035:南方CASS7.1台阶画法案例大全 摘要:本文详细介绍了南方CASS7.1软件中5种台阶工具的使用方法,包括普通台阶、有边台阶、L型台阶、U型台阶和不规则台阶。重点说明各类台阶的绘制步骤和注意事项,如绘制方向(从右下角逆时针连接4个点)、台阶方向标识(白色边为下边)、台阶数自动生成不可更改等特性。同时指出高版本CASS可能存在操作差异,并配以多张示意图直观展示各类台阶的绘制过程和效果,为使用CASS7.1绘制建筑台阶提供了实用指导。(148字) 阅读详情
 

一、Spring的IoC(Inversion of Control)。
这是Spring中得有特点的一部份。IoC又被翻译成“控制反转”,也不知道是谁翻译得这么别扭,感觉很深奥的词。其实,原理很简单,用一句通俗的话来说:就是用XML来定义生成的对象。IoC其实是一种设计模式,Spring只是实现了这种设计模式。

这种设计模式是怎么来的呢?是实践中逐渐形成的。

第一阶段:用普通的无模式来写Java程序。一般初学者都要经过这个阶段。
第二阶段:频繁的开始使用接口,这时,接口一般都会伴随着使用工厂模式。
第三阶段:使用IoC模式。工厂模式还不够好:(1)因为的类的生成代码写死在程序里,如果你要换一个子类,就要修改工厂方法。(2)一个接口常常意味着一个生成工厂,会多出很多工厂类。
    可以把IoC模式看做是工厂模式的升华,可以把IoC看作是一个大工厂,只不过这个大工厂里要生成的对象都是在XML文件中给出定义的,然后利用Java的“反射”编程,根据XML中给出的类名生成相应的对象。从实现来看,IoC是把以前在工厂方法里写死的对象生成代码,改变为由XML文件来定义,也就是把工厂和对象生成这两者独立分隔开来,目的就是提高灵活性和可维护性。

    IoC中最基本的Java技术就是“反射”编程。反射又是一个生涩的名词,通俗的说反射就是根据给出的类名(字符串)来生成对象。这种编程方式可以让对象在生成时才决定要生成哪一种对象。我在最近的一个项目也用到了反射,当时是给出一个.properties文本文件,里面写了一些全类名(包名+类名),然后,要根据这些全类名在程序中生成它们的对象。反射的应用是很广泛的,象Hibernate、String中都是用“反射”做为最基本的技术手段。

    在过去,反射编程方式相对于正常的对象生成方式要慢10几倍,这也许也是当时为什么反射技术没有普通应用开来的原因。但经SUN改良优化后,反射方式生成对象和通常对象生成方式,速度已经相差不大了(但依然有一倍以上的差距)。


    所以要理解IoC,你必须先了解工厂模式和反射编程,否则对它产生的前因后果和实现原理都是无法理解透彻的。只要你理解了这一点,你自己也完全可以自己在程序中实现一个IoC框架,只不是这还要涉及到XML解析等其他知识,稍微麻烦一些。


    IoC最大的好处是什么?因为把对象生成放在了XML里定义,所以当我们需要换一个实现子类将会变成很简单(一般这样的对象都是现实于某种接口的),只要修改XML就可以了,这样我们甚至可以实现对象的热插拨(有点象USB接口和SCIS硬盘了)。

    IoC最大的缺点是什么?(1)生成一个对象的步骤变复杂了(其实上操作上还是挺简单的),对于不习惯这种方式的人,会觉得有些别扭和不直观。(2)对象生成因为是使用反射编程,在效率上有些损耗。但相对于IoC提高的维护性和灵活性来说,这点损耗是微不足道的,除非某对象的生成对效率要求特别高。(3)缺少IDE重构操作的支持,如果在Eclipse要对类改名,那么你还需要去XML文件里手工去改了,这似乎是所有XML方式的缺憾所在。

    总的来说IoC无论原理和实现都还算是很简单的。一些人曾认为IoC没什么实际作用,这种说法是可以理解的,因为如果你在编程中很少使用接口,或很少使用工厂模式,那么你根本就没有使用IoC的强烈需要,也不会体会到IoC可贵之处。有些人也说要消除工厂模式、单例模式,但是都语焉不详、人云亦云。但如果你看到IoC模式和用上Spring,那么工厂模式和单例模式的确基本上可以不用了。但它消失了吗?没有!Spring的IoC实现本身就是一个大工厂,其中也包含了单例对象生成方式,只要用一个设置就可以让对象生成由普通方式变单一实例方式,非常之简单。

   总结:
   (1)IoC原理很简单,作用的针对性也很强,不要把它看得很玄乎。
   (2)要理解IoC,首先要了解“工厂、接口、反射”这些概念。


二、Spring的MVC

如果你已经熟悉Struts,那么不必把MVC做为重点学习内容。基本上我认为Spring  MVC是一个鸡肋,它的技术上很先进,但易用性上没有Struts好。而且Struts有这么多年的基础了,Spring很难取代Struts的地位。这就是先入为主的优秀,一个项目经理选用一种框架,不能单纯的从它的技术上考虑,还有开发效率,人员配置等都是考虑因素。但做为研究性的学习,Spring的MVC部份还是蛮有价值的。


三、数据库层的模板
Spring主要是提供了一些数据库模板(模板也是一种Java设计模式),让数据部分的代码更简洁,那些try...catch都可以不见了。这个的确是个好东东。


四、AOP

AOP又称面向方面编程,它的实现原理还是用了反射:通过对某一个种类的方法名做监控来实现统一处理。比如:监控以“insert”字符串开头的方法名,在这种方法执行的前后进行某种处理(数据库事务等)。但这里我有一个疑问?不一定所有以insert开头的方法都是数据库操作,哪么当某个insert开头的方法不是数据库操作,你又对它进行了数据事务的操作,这样的错误如何防止???我对这方面了解不深,还是只知道一个大概。


曾看过一个程序员发出这样的感慨:框架一个接一个,学也学不完,而且有必要吗?这样一层层的加上框架,还不如直接写JSP来得直接,效率还高。我想这种困惑很多人都有吧?但如果你经过的项目渐多,就会发现,维护项目要比开发项目更艰难,代价更大。那种用JSP直接来写,层次又不清楚的开发,往往最后得到一个不可再修改的软件,一团乱麻,移一发而动全身。但软件不象电视机,做好了就不会改动了,软件是一个变化的事物,用户的需求随时会改变,这时你会体会到分层和使用框架的好处了,它们为你做了软件中很多和业务无关的工作,你可以只关注业务,并减少代码量。唯一缺点就是有一个学习的代价,框架配置上也较麻烦。

【Windows Server 2019】Active Directory Certificate Services 证书颁发机构的安装,配置和管理Ⅰ——AD CS的安装和配置 博文主要介绍了Windows Server 2019的证书颁发机构的安装和配置方法。 阅读详情

相关推荐

cs188Inference in Bayes Nets(贝叶斯网络的推理)

cs188Inference in Bayes Nets贝叶斯网络的推理Question1(3 points):Bayes Net StructureQuestion2(1 points):Bayes Net ProbabilitiesQuestion 3(5 points):Join FactorsQuestion4(4 points):EliminateQuestion5(4 points):NormalizeQuestion 6(4 points):Variable EliminationQuesti

weixin_46582817的博客 1675

Spring学习笔记:1、概念理解

对Spring耳闻已久,但一直没有时间和心情去看它,最近它的声音是越来越大了,Java视线http://forum.javaeye.com/有不高手在谈论它。于是趁着有空闲时间,我也花了两个晚上看了看Spring,看的是夏昕的http://www.xiaxin.net/Spring_Dev_Guide.rar,文章写得不错。以下谈谈我的学习感受一、Spring的IoC(Inversion of

二七老泉 1633

西门子 标准程序解读---> 机器手抓取和涂胶控制程序

摘要 该程序实现机械手在OP70/OP90工位的自动化控制,核心功能包括: 流程控制:分段(Seg1-Seg11)管理抓件、涂胶、放件等动作,结合DB1050/DB1250数据块监控工位状态及变位机位置反馈。 安全机制:配置干涉区(FC124)、实时检测安全光/急停信号,防止碰撞;服务程序(FB191)支持维修位触发与安全隔离。 参数配置:通过DB块关联机器人速度、节拍(FB27)、车型编码(如空过=2)及手自动模式(DB70.DBX21.2)。 应用场景:适用于汽车焊接/装配线

工控智联驿站 1239

关于Spring-mvc的机制以及Ioc、DI的理解

Spring-mvc算得上是ssh框架中的管理者,是用来配置bean,并维护bean之间的关系的容器框架。beans是spring核心配置文件:applicationContext.xml的主角,程序中所有的对象都可以配置为bean并为其注入属性值,是实现IoC和DI的关键,下面先介绍一下Spring的工作机制: 一般来说,我们把一个项目分为Web层、业务层、Dao层和持久层,Web层主要是页

GGdido的博客 1767

scratch航天梦主题课程作品分享,包含ppt、素材包

而今年多国都将发射探测器尝试登陆月球,2023年或将称为“登月年”,请大家发挥创新思维,以“星辰大海”为创作主题,搜集相关信息 、展开联想,为实现升空 、探测 、取样贡献创意!即使去淘宝买的素材,也要从百度网盘,但素材太多大了或者太多文件,也要充值百度网盘超级会员才能保存,提高下载速度。同学们大家好,今天我们就要开始航天主题-嫦娥五号探月工程系列的编程课程了,不仅可以学习到很多航天知识,了解本次嫦娥五号的发射历程,还能让我们用编程遨游太空呢。即使下载了,也要上传,不是特别方便,尤其是不好查找。

少儿编程吕口口 2485

用RK3588 NPU加速人脸识别:从本地测试到服务器部署的完整流程(含ONNX模型)

本文详细介绍了如何利用RK3588 NPU加速人脸识别系统,从模型优化到高并发服务部署的全流程。通过RetinaFace和FaceNet模型的协同推理,结合ONNX模型转换和NPU特有优化技巧,显著提升识别效率。文章还涵盖了gRPC通信架构设计、性能压测及实际部署经验,为开发者提供了一套完整的解决方案。

weixin_29058331的博客 465

Spring框架(2)—IOC、MVC

文章目录一、Spring的loC容器IOC的概念DI是什么?set注入(推荐)构造方法注入接口注入(少)二、springmvc框架springmvc-helloworldmaven项目(javaee)引入springmvc框架完成Controller层的代码配置springmvc框架配置IoC容器(mvc 容器)配置servlet 一、Spring的loC容器 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7thD44cJ-1647445462666)(D:\dyit\202

wdy00000的博客 1193

量子阱技术解析:从基础原理到前沿应用

本文深入解析量子阱技术,从微观“能量游泳池”的基础原理出发,阐释了其通过限制电子实现能级量子化,从而精确调控发光波长的核心机制。文章详细探讨了量子阱在半导体激光器和LED中的革命性应用,如实现低阈值电流与高亮度显示,并展望了其在能带工程及量子级联激光器等前沿领域的发展与挑战。

weixin_29267307的博客 282

Spring IOC/DI和MVC及若依对应介绍

Spring IOC/DI以及MVC

世界在我口袋的博客 761

WRF中使用ERA5再分析数据

   本人在做一些实例时,需要用到最新的ERA5再分析数据集,其中我下载的是ERA5 hourly data on pressure levels form 1979 to present和ERA5 hourly data on single levels from 1979 to present中的3天数据。 1、注册climate copernicus账号 下载ERA5数据前先要注册其账号 2、选择变量    WRF中对于气象数据的字段有具体的要求, ......

GIS 8172

【Bug已解决】Codex 报错 MCP client for context7 failed to start: program not found 解决方案

方案适用场景推荐指数改用绝对路径Windows 上最常见、最有效的解决方式⭐⭐⭐⭐⭐提前全局安装避免依赖 npx减少运行时网络下载的不确定性⭐⭐⭐⭐使用 .cmd 后缀Windows 平台快速尝试⭐⭐⭐⭐开启调试日志需要更精确定位失败原因⭐⭐⭐⭐统一封装启动脚本需要跨平台兼容多个 MCP 服务⭐⭐⭐报错的本质是Codex 启动 MCP 子进程时,无法正确定位配置文件中写的简写命令名对应的可执行文件,尤其容易发生在 Windows 平台上使用npx这类简写命令的场景。

一键难忘的博客 5816

Nodejs 第四十一章(项目架构MVC,IoC,DI)

到现在为止,我们学习了,express框架,编写接口,mysql数据库读写数据,knex,prisma ORM框架,现在是时候把这些组合到一起,并且实现一个类似于Nestjs或者java的SpringBoot的架构真正的去开发我们的nodejs项目。

qq1195566313的博客 2531

具身智能:原理、算法与系统 第18章 模仿学习与人类示范

与基于试错机制的强化学习不同,模仿学习假设存在能够提供高质量轨迹示范的专家策略,学习者的目标是在不直接访问专家内部决策机制的情况下,复现或泛化专家的行为模式。此外,选项 GAIL(Option-GAIL)将分层强化学习与对抗模仿结合,学习选项(Options)级别的策略,能够捕捉专家示范中的多模态行为与高层意图。X-Sim 框架提出从真实到模拟再到真实的迁移路径:首先从人类视频中重建物理仿真环境,在仿真中训练状态级策略,随后通过策略蒸馏获得基于视觉的策略,最后通过在线领域自适应对齐真实与仿真观测。

VectorShift的博客 127

Spring5新特性简述及经典的高频面试题分析

流行词:Spring5 特性 面试题 参考代码:https://gitee.com/li-lixiang/lean-spring-2.0.git 在前面的blog中,已经实现Spring IOC、DI、MVC和AOP,并学习了Spring的数据访问。本次学习Spring5的新特性以及高频面试题。 Spring5新特性 1)升级JDK8,J2EE 7 2)反应是的编程 3)全面支持注解编程 4)支持函数式编程 5)全面支持REST风格配置 6)对HTTP2.0全面支持 7)Kotlin和S

xiaoyou59的专栏 370

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【java技术面试第五十四讲】Java面试题54 . Spring事务的传播特性和隔离级别

Java面试题54 :Spring事务的传播特性和隔离级别提前预告,完全免费,写文不易: 如果喜欢、对你有所帮助还请大家点个在看, 好东西要大家共享才能实现它的价值 , 让更多有需要的...

hello world! 680

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java面试复习:面向对象编程、Java 8新特性与Spring

本文是为Java面试复习准备的,涵盖了Java基础中的面向对象编程、Java 8新特性、并发编程以及Spring框架的核心知识点。通过概念解析、核心原理、面试高频问题及代码示例,帮助读者深入理解并掌握这些知识点。

weixin_46532327的博客 356

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Java面试复习指南:并发编程、JVM、Spring框架、数据结构与算法、Java 8新特性

本文为Java面试复习指南,涵盖了并发编程、JVM原理、Spring框架、数据结构与算法、Java 8新特性等核心考点。通过概念解析、核心原理、高频问题及代码示例,帮助读者在短时间内高效掌握关键知识点,以便在面试中脱颖而出。

weixin_46532327的博客 518

Spring事务传播特性的最好总结和面试答案

Spring事务传播特性一共有7种: 1. REQUIRED 代表如果已经存在一个事务,就加入到这个事务中。如果当前没有事务,就新建一个事务,就是默认的事务传播设置。 类比解释:如果马路上面有车就搭车,没有车就自己造一个车。(反正走路是不可能的) 2.SUPPORTS 代表如果已经存在一个事务,就加入到这个事务中。如果当前没有事务,就以非事务方式执行。 类比解释:如果马路上面有车就搭车,没有车就自...

qq_43107323的博客 1412

Spring面试题:Spring事务的传播特性与四大特性

四大特性:1.原子性:事务最基本的操作单元,要么全部成功,要么全部失败2.一致性:指的是在一个事务的执行之前和执行之后数据库都必须处于一致性的状态。3.隔离性:指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。4.持久性:指的是只要事务成功结束,它对数据库所做的更新就必须永久保存下来。传播特性:1.propagation_requierd:如果当前没有事务,就新建一个事务,如果已经存在一个事务,那就加入到这个事务中,这是Spring默认的选择2.propagation_s

m0_68775394的博客 506

java面试spring特性,简单说一下Spring的特性?

1.方便解耦,简化开发通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。2.AOP编程的支持通过Spring提供的AOP功能,方便进行面向切面的编程。3.声明事物的支持在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。4.方便程序的测试可以用非容器依赖的编程方式...

weixin_42353053的博客 389

2026企业必用!Spring Boot 3.3 核心新特性(就业向,面试重点)

摘要:SpringBoot 3.3作为2026年企业级Java开发必备技能,针对生产环境优化了核心特性。文章精选5个企业最常用、面试最高频的新特性:配置分层增强(支持多环境优先级管理)、启动性能优化(微服务启动提速10%-15%)、HTTP/3正式支持(提升高并发性能)、监控调试增强(新增配置来源追踪)、SpringAI无缝集成(简化AI功能开发)。每个特性详解企业应用场景、实操代码和面试回答模板,帮助开发者快速掌握实用技能。同时提供版本升级注意事项,解决依赖兼容和配置调整等落地难题,助力求职者高效应对技术

雨辰AI的博客 865

Spring事务的传播特性(面试考点)

1.Spring 事务管理 1.1.Spring 事务概述 事务是一个不可分割的逻辑工作单元,具备ACID特性,实际工作中可借助Spring进行事务管理。 事务四大特性:ACID 1)原子型(一个事务中的多个操作要么都成功要么都失败) 2)一致性(例如存钱操作,存之前和存之后的钱数应该是一致的) 3)隔离性(事务与事务应该是相互隔离的) 4)持久性(事务一旦提交,数据要持久保存) Spring提供了两种事务管理方式, 编程式事务和声明式事务。编程式事务指的是通过编码方式实现事务控制;声明式事务基于 AOP

Error_debug的博客 588

某游戏大厂Java面试指南:Spring、集合与语言特性深度解析 (三)

本文总结了游戏大厂Java后端面试的核心知识点,包括Spring框架、集合机制和Java语言特性。重点解析了Spring Bean的生命周期、线程安全问题、事务机制,以及HashMap和LinkedHashMap的使用场景和优化策略。同时介绍了JDK8新特性、Java语言特性(封装、继承、多态)以及与C++的对比。文中强调了理解设计原理的重要性,而不仅仅是死记答案,为面试者提供了全面而深入的准备方向。

qq_33665793的博客 1080

spring boot的四大特性(面试必问)

spring boot的四大特性 Starter添加项目依赖 Starter依赖将所需的常见依赖按组聚集在一起,形成单条依赖 bean的自动化配置 spring boot会考虑应用中的其他因素并推断你所需要的Spring配置。比如在A类中有一个成员变量是在jar包中的B类,如果是普通的spring mvc模式,那么你需要在xml中定义B类的一个bean对象,然后才可以在A类中使用@A...

qq_31185815的博客 1万+

【Spring面试全家桶】Spring之6.0核心新特性介绍

JUnit5是JUnit测试框架的新版本,与之前的版本相比它提供了更多的改进和新特性,其中最重要的改进是JUnit5的模块化结构和扩展性,这使开发人员更加灵活地编写和管理测试用例。WebFlux是一种反应式Web框架,它使用了非阻塞的I/O和事件驱动的模型,能够处理更高的并发量和更短的响应时间。在传统的HTTP协议中,每次请求都需要建立新的连接,而WebSocket协议可以在一条连接上实现长期的通信,从而减少了连接建立的开销,同时也提高了通信的实时性和性能。这里我们将深入探讨其工作原理和运行原理。

我是Java程序员廖志伟,感谢朋友们的支持! 1741

面试官问我“Spring完结&Spring5新特性”,我说这是“武林大会闭幕式”

阳光明媚的下午,我穿着一件印着“hello world”的黑色 T 恤,走进了一间玻璃墙会议室。对面坐着一位面试官,鼻梁上挂着金丝眼镜,表情比数据库还冷静。他合上笔记本,突然说:“你觉得 Spring 到 5 就算完结了吗?新特性你了解吗?我心头一震,这不是《武林外传》的结局大猜想吗?我笑着回道:“Spring5,正是江湖传人内功大成的版本啊,您要听完整版还是加特技的?对 Java8 的全面拥抱Reactive 编程的开山立派为 Spring Boot2 铺路为微服务架构打基础。

真正的大师永远怀着一颗学徒的心 549
上一篇: Android 面试题
下一篇: 国内Android开发现状及职业规划浅析
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值