Spring学习笔记1

spring boot 2.1学习笔记【0】目录 springboot2.1 专栏目录。 阅读详情

1、概念理解

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

一、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直接来写,层次又不清楚的开发,往往最后得到一个不可再修改的软件,一团乱麻,移一发而动全身。但软件不象电视机,做好了就不会改动了,软件是一个变化的事物,用户的需求随时会改变,这时你会体会到分层和使用框架的好处了,它们为你做了软件中很多和业务无关的工作,你可以只关注业务,并减少代码量。唯一缺点就是有一个学习的代价,框架配置上也较麻烦。


学习框架,我认为应该:第一步,了解这个框架中的一些关键概念,它的具体含义是什么。第二步,了解这个框架的精华在哪里,它能对开发起到什么样的作用,最好能对它的原理有一定的了解。第三步,用这个框架来写几个例子,实际体会一下。我现在还是刚刚大概完成了前两步,这几天会再看看Spring的文档并用Spring写几个例子,到时一起发出来。

另外,很赞赏<Spring开发指南>的作者夏昕的观点,将自已的经验写成文档公开出来,不过一个人的力量终究太弱。最好能够形成一个组织,对一种新技术,由一两个人出一个大纲,大家把它分了,更写一章,然后由两三个人总集起。我个人感觉,由于英文语言的关系,新技术引进到国内的还是太慢了,至少要比国外慢上一年以上,成立一个开源文档组织还是很有意义的事。

 
spring boot 2.1学习笔记【三】自定义banner 官网中说已经支持动态banner,那么我们试一下 普通banner 这里介绍两个网站,可以将文字转为不同的格式的字符画。 http://www.network-science.de/ascii/ http://patorjk.com/software/taag/ 在resources路径下新建一个banner.txt文件,粘贴上述字符串,重启项目,查看输出: 这里我们还可以对其格式进行... 阅读详情

相关推荐

【云迁移工具RDA】迁移常见问题

Agent无法正常启动,Linux系统提示“SMS.0201 Failed to start sms agent!”,Windows系统提示“SMS.0201 源端主机网络繁忙,无法连接api网关”。该问题通常是由于源端没有通公网,或者没有按照要求配置hosts,无法与iam或者sms通信导致。需要排查源端网络。1.登录源端服务器。2.检查源端是否能正常访问互联网,若无法访问,请处理后重新启动Agent。可参考弹性公网IP Ping不通检查源端的DNS,防火墙,安全组、本地网络等。

2404_89358774的博客 1487

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

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

二七老泉 1633

速腾RS-LiDAR-16激光雷达ROS环境搭建与点云可视化实战指南

本文提供速腾RS-LiDAR-16激光雷达在ROS环境下的完整搭建与可视化实战指南。从硬件连接、网络配置、驱动安装编译,到核心参数详解与Rviz点云可视化,手把手解决IP设置、坐标系对齐等常见问题,帮助开发者快速实现激光雷达三维点云数据的采集与显示。

weixin_29271263的博客 372

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

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

GGdido的博客 1767

从模拟到实战:移远EC800M单片机MQTT接入OneNet全流程解析

本文详细解析了移远EC800M单片机通过MQTT协议接入OneNet平台的全流程,涵盖环境准备、模拟设备搭建、硬件迁移、数据交互调试及性能优化等关键步骤。针对常见问题如AT指令缓冲区溢出、心跳间隔设置等提供实战解决方案,帮助开发者高效实现物联网设备稳定接入。

weixin_29215815的博客 434

SpringBoot系列之实现一个AI聊天助手

本文介绍了基于Spring Boot框架实现的AI聊天助手项目。该项目使用Spring Boot 3.2.3、Spring AI 1.0.0-M5等技术栈,集成DeepSeek-R1-Distill-Llama-8B模型实现智能对话功能。文章详细介绍了项目配置流程、运行方式和核心代码实现,包括ChatMessage模型类和服务类ChatService的关键功能,如消息处理、历史记录管理和AI响应获取等。读者可通过提供的GitHub链接获取完整代码,快速搭建自己的AI聊天应用。

Nicky's blog 1452

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

GJB软件需求规格说明-编制指南

《软件需求规格说明》是软件开发过程必不可少的文档,并且需要评审,也是后续鉴定试验的依据,因此,非常有必要认真对待此文档。 文档对于很多开发技术人员来说是一件非常头疼的事,虽然标准有要求,但是光看标准还是难以下笔。 本文将详细讲解如何按照GJB 438C的要求编写《软件需求规格说明》。 注:文中有背景颜色内容为标准内容,加粗部分为范例。斜体部分为解释。 全文1.3万字

Abel的博客 6363

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

Spring IOC/DI以及MVC

世界在我口袋的博客 761

代谢组数据分析(二十四):基于tidymass包从质谱原始数据到代谢物注释结果的实践指南

本教程介绍了如何使用 R 语言中的 tidymass 包进行代谢组学数据分析。tidymass 是一个专为液相色谱-质谱(LC-MS)数据设计的开源工具,提供从数据准备到统计分析的全流程支持。教程详细讲解了数据准备、数据处理、数据探索、数据清洗、代谢物注释、统计分析及结果输出的步骤。用户需准备 MS1、MS2 数据和样本信息表,并通过 tidymass 进行峰识别、峰分组、保留时间校正等操作。数据处理后,用户可进行数据探索、清洗和代谢物注释,最终通过统计分析发现潜在的生物标志物,并输出结果。教程还提供了代码

专注生信领域 1636

Python 爬虫实战:赛事分析平台构建与比赛数据抓取

在体育赛事日益丰富的今天,对比赛数据的收集与分析对于运动员、教练团队以及体育爱好者都具有重要意义。通过构建一个赛事分析平台,我们可以系统地抓取、整理和展示各类比赛数据,为用户提供全面的赛事洞察。本文将深入讲解如何利用 Python 爬虫技术实现这一平台的构建,涵盖从目标网站分析到数据可视化展示的全过程。

u014481728的博客 3181

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

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

qq1195566313的博客 2531

099、多摄融合与变焦系统:广角到长焦的无缝切换算法

本文分享了多摄融合与变焦系统开发中的实战经验和关键挑战。作者通过一个旗舰机项目案例,揭示了广角到长焦切换时画面抖动问题的根源——融合算法误将视差当作运动补偿,并提出"视差冻结窗口"的解决方案。文章总结了三大多摄融合难点:物理视差处理、亮度差异补偿和切换时机把控,详细阐述了分层架构设计、融合权重计算等核心技术。同时强调了产线校准的重要性,并给出五项实用建议:允许边缘鬼影保留、参数场景化配置、加强产线检测、完善调试接口,以及合理运用AI技术。全文展现了多摄融合技术在时间、空间和感知维度上的复杂平衡艺术。

sundong_81的博客 48

Spring MVC 学习笔记 十五 what's new in spring mvc 3.1

原文地址:http://starscream.iteye.com/blog/1098880

470

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

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

IDEA的使用指南

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

spring学习笔记1

spring学习笔记1 两个核心 - IOC——控制反转:原来需要我们new的对象,现在由spring容器来帮我们创建管理对象。 - AOP——面向切面:扩展功能不需要修改原来的代码。 三层框架 A 表现层 web层 MVC是表现层的一个设计模型 B 业务层 service层 C 持久层 dao层 特点 1)方便解耦,简化开发 Spring 就是一个大工厂,可以将所有对象的创建和依赖关系的维护交给 Spring 管理。 2)方便集成各种优秀框架 Spring 不排斥各种优秀

qq_43345810的博客 144

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Spring学习笔记1——Spring来啦

一、什么是Spring? Spring是一款主流的、开源、轻量级的企业级java应用程序开发框架,具有强大的功能和卓越的性能。 在服务器端采用三层体系架构:表现层(web)、业务逻辑层(service)、持久层(dao)。 Spring提供了web MVC框架: 模型(Model)由POJO类组成,封装了应用程序数据。 视图(View)渲染模型数据。 控制器(Controller)负责处理用户发送的请求并生成对应的模型,然后传递给视图渲染。 二、Spring体系结构 Spring框架采用分层架构,根

weixin_44802953的博客 255

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Spring Boot实战学习笔记1

title: Spring Boot实战学习笔记 tags:Spring Boot实战grammar_cjkRuby: true摘要本文为学习Spring Boot实战的学习笔记,学习了一遍,但是好记性不如烂笔头,所以文章记录下来。如果喜欢请查看,图书购买地址为: https://item.jd.com/11894632.html.摘要1.Spring 基础1.1 Spring 主要模块1.1.1

bobshute的专栏 2590

Spring学习笔记(1):了解Spring

🥞目录 🥪Spring简介: 🍰Spring常用框架: 🍕Spring Framework 🍕SpringMVC 🍕SpringBoot 🍕SpringCloud 🍕SpringData 🍕MongoDB 🍟Spring系统架构: 🍕(1)核心层 🍕 (2)AOP层 🍕(3)数据层 🍕 (4)Web层 🍕 (5)Test层 🥙IOC、IOC容器、Bean、DI 🍕1. IOC(Inversion of Control)控制反转 🍕2. DI(Dependency ...

她与剑意皆失的博客 1656

spring-cloud-task 1.2.2 学习笔记

spring-cloud-task 1.2.2 学习笔记概述 参考 https://github.com/spring-cloud/spring-cloud-task https://github.com/spring-cloud/spring-cloud-task/tree/master/spring-cloud-task-samples https://www.huangyunkun.com/

undergrowth的专栏 2119

Spring学习笔记——1

Spring学习笔记——1一、Spring入门1.1、学习路线1.2、传统Javaweb开发困惑及解决方法1.3、三种思想的提出和框架概念1.3.1、IoC、DI和AOP思想提出1.3.2、框架的基本特点1.4、Spring概述1.5、BeanFactory快速入门1.6、ApplicationContext快速入门1.7、BeanFactory与ApplicationContext的关系1.8、BeanFactory和ApplicationContext的继承体系二、基于XML方式Bean应用2.1、Be

weixin_74155781的博客 1405

Spring学习笔记【1】

Spring框架总览学习

2301_80463469的博客 935

Spring5学习笔记1——工厂

Spring5学习笔记1——工厂 文章目录Spring5学习笔记1——工厂第一部分:Spring工厂第一章、引言1. EJB存在的问题2. 什么是Spring3. 什么是设计模式4. 工厂设计模式4.1 什么是工厂设计模式4.2 简单工厂的设计4.3 通用工厂的设计5. 总结第二章、第一个Spring程序1. 软件版本2. 环境搭建3. Spring的核心API4. 程序开发5. 细节分析6. Spring工厂的底层实现原理(简易版)7. 思考第三章、Spring5.x与日志框架的整合1.为什么要整合日志框

Ning_chuan的博客 4266
上一篇: 四种线程间的通信(笔记)
下一篇: 英语口头禅
Image_Graphics
博客等级 码龄20年 18粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值