Java EE企业级应用开发案例教程(Spring+Spring MVC+MyBatis)_第1页
Java EE企业级应用开发案例教程(Spring+Spring MVC+MyBatis)_第2页
Java EE企业级应用开发案例教程(Spring+Spring MVC+MyBatis)_第3页
Java EE企业级应用开发案例教程(Spring+Spring MVC+MyBatis)_第4页
Java EE企业级应用开发案例教程(Spring+Spring MVC+MyBatis)_第5页
已阅读5页,还剩1229页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

企业级应用开发案例教程(Spring+SpringMVC+MyBatis)授课:XXX时间:20XX.XXJAVAEEJAVAEE01020304JavaEE企业级应用入门Spring基础SpringBean管理SpringAOP全课导航05Spring数据库编程06070809SpringMVC基础数据绑定和请求响应异常处理和拦截器文件上传和下载全课导航10MyBatis基础11121314动态SQL

MyBatis关联映射和缓存机制

MyBatis注解配置

SSM框架整合全课导航15

学校图书管理系统Part01JavaEE企业级应用入门本章导读随着浏览器功能的日益强大、网页技术的日益流行,以及应用服务器软件和中间件产品的逐步成熟,浏览器/服务器(B/S)结构的企业级应用已经成为一种流行趋势。针对其编程需求,企业级应用程序版本JavaEE诞生了,它提供了多种框架,简化和规划了分布式多层企业级应用的开发和部署。学习目标知识目标理解企业级应用的概念和特点。了解企业级应用的解决方案。了解常见的JavaEE企业级应用开发框架。技能目标能在Windows系统中搭建企业级应用开发环境。能使用Eclipse创建简单的JavaWeb项目,并能在Tomcat服务器中运行。素质目标通过对计算机技术的了解,增强探索意识。目录|Contents企业级应用及解决方案1.1常见的JavaEE企业级应用开发框架1.2搭建企业级应用开发环境1.301企业级应用及解决方案1.1.1什么是企业级应用企业级应用是指为商业组织、大型企业创建并部署的应用。企业级应用的结构复杂、涉及的外部资源众多、事务密集、数据量大、用户数多,需要较强的安全性。定义(1)海量数据持久保存。(2)数据一致。(3)响应迅速。(4)与其他应用集成。特点(5)安全性高。(6)具备可扩展性。(7)人性化的界面设计。1.1.2企业级应用解决方案一般来说,企业级应用开发主要分为表现层、业务逻辑层和数据持久层,表现了“高内聚,低耦合”的思想。(1)表现层:

主要负责发起用户请求,并显示响应结果,还用于分派用户请求,从而执行不同的业

务逻辑。(2)业务逻辑层:

主要负责数据的传递和处理,包括具体的业务逻辑操作,并返回处理结果。(3)数据持久层:

主要负责对数据库的访问与操作。1.1.2企业级应用解决方案图1-1SSM框架的体系结构JavaEE实现企业级应用的主流框架为SSM,即Spring、SpringMVC和MyBatis的整合框架,它们分别实现了企业级应用的业务逻辑层、表现层和数据持久层。SSM框架的体系结构如图1-1所示。课堂小结1.什么是企业级应用2.企业级应用解决方案02常见的JavaEE企业级应用开发框架1.2.1SSM框架1.SpringSpring

是JavaEE的一个轻量级开源框架,它是为了解决企业级应用开发的复杂性而产生的。Spring的主要优势是分层架构,它可以将单层框架组合在一起,建立一个连贯的体系,以统一、高效的方式构建整个应用。2.SpringMVCSpringMVC是Spring提供的一个基于MVC设计模式的轻量级Web开发框架,其本质相当于Servlet。SpringMVC框架采用松耦合、可插拔的组件结构,具有高度可配置性,以及更强的扩展性和灵活性。1.2.1SSM框架3.MyBatisMyBatis原本是Apache的一个开源项目iBatis。MyBatis是一个优秀的数据持久层框架,开发者只需要关注SQL语句本身。MyBatis虽然封装性低,但性能优秀、简单易学,满足高并发和高响应需求,在Web开发中应用广泛。1.2.2其他框架1.SpringBootSpringBoot目的是简化Spring的搭建和开发过程。SpringBoot本身并不提供Spring的核心特性及扩展功能,它只是用于快速、敏捷地开发基于Spring的应用。SpringBoot还集成了大量常用的第三方库,几乎是零配置的开箱即用,使开发者能够更加专注于业务逻辑。2.SpringCloudSpringCloud是分布式微服务架构的一站式解决方案,它提供了一套简单易用的编程模型。SpringCloud并不是一门技术,而是一系列微服务解决方案或框架的有序集合。课堂小结1.

SSM框架2.其他框架03搭建企业级应用开发环境开发环境JavaEE企业级应用开发首先需要搭建开发环境,主要安装的软件及其版本如下。JDK:jdk-17_windows-x64_bin.exe。01应用服务器Tomcat:apache-tomcat-9.0.68。02数据库MySQL:mysql-8.0.30-winx64。03集成开发环境Eclipse:eclipse-inst-jre-win64.exe(2022-06)。04Eclipse简体中文语言包:BabelLanguagePack-eclipse-zh_4.22.0.v20211218020001。051.3.1安装JDK1.下载和安装JDK步骤1访问/java/technologies/downloads,在打开的软件版本页面中选择“Java17”→“Windows”→“/java/17/latest/jdk-17_windows-x64_bin.exe”选项,下载用于Windows平台的JDK,如图1-2所示。步骤2双击下载好的jdk-17_windows-x64_bin.exe文件,根据安装提示进行安装即可。安装JDK点击此处播放微课1.3.1安装JDK1.下载和安装JDK图1-2下载JDK1.3.1安装JDK2.配置JDK步骤1

右击桌面“此电脑”图标,在弹出的快捷菜单中选择“属性”菜单项,如图1-3所示。步骤2打开“设置”窗口,在右侧的列表中选择“高级系统设置”选项,如图1-4所示。图1-3选择“属性”菜单项图1-4选择“高级系统设置”选项1.3.1安装JDK2.配置JDK步骤3打开“系统属性”对话框,切换到“高级”选项卡,然后单击“环境变量”按钮,如图1-5所示。图1-5“系统属性”对话框1.3.1安装JDK2.配置JDK步骤4打开“环境变量”对话框,单击“系统变量”下的“新建”按钮,如图1-6所示。图1-6“环境变量”对话框1.3.1安装JDK2.配置JDK步骤5

打开“新建系统变量”对话框,在“变量名”文本框中输入“JAVA_HOME”,在“变量值”文本框中输入“C:\ProgramFiles\Java\jdk-”(默认情况下,JDK的安装路径为C:\ProgramFiles\Java),然后单击“确定”按钮,如图1-7所示。步骤6返回“环境变量”对话框,选择“系统变量”→“Path”选项,然后单击“编辑”按钮(见图1-6)。图1-7“新建系统变量”对话框1.3.1安装JDK2.配置JDK步骤7

打开“编辑环境变量”对话框,选择“C:\ProgramFiles\CommonFiles\Oracle\Java\javapath”选项(见图1-8),将其修改为“%JAVA_HOME%\bin”,然后单击“确定”按钮,如图1-9所示。图1-8“编辑环境变量”对话框

图1-9修改环境变量1.3.1安装JDK2.配置JDK提示在配置Path变量时,JDK的路径要放在最前面,因为其他软件(尤其是Oracle)也可能会对Path变量进行配置,而这种配置可能会对JDK的配置产生影响。步骤8返回“环境变量”对话框,单击“确定”按钮,接着返回“系统属性”对话框,单击“确定”按钮,即可完成配置。1.3.2安装Tomcat1.下载和安装Tomcat图1-10选择Tomcat版本步骤1

访问,打开Tomcat官网,然后在左侧的

列表中选择“Download”→“Tomcat9”选项,如图1-10所示。1.3.2安装Tomcat1.下载和安装Tomcat图1-11下载Tomcat步骤2

打开下载页面,选择“9.0.68”→“BinaryDistributions”→“Core”→“64-bitWindowszip”选项,如图1-11所示。1.3.2安装Tomcat1.下载和安装Tomcat提示Tomcat官网提供的Tomcat版本会及时更新,可根据需求下载稳定版本,操作步骤与下载9.0.68版本类似。此处下载的是Tomcat的免安装版本,建议在软件开发过程中使用免安装版本,实际部署时使用安装版本。配置Tomcat之前,应保证已经安装并配置了JDK。因此,开发者应根据JDK的版本及平台系统选择Tomcat的版本。此时,可在Tomcat官网左侧的列表中选择“Download”→“Whichversion?”选项,查看各软件版本对应表,如图1-12所示。1.3.2安装Tomcat1.下载和安装Tomcat图1-12版本对应表1.3.2安装Tomcat1.下载和安装Tomcat步骤3

解压下载好的安装包,将“apache-tomcat-9.0.68”文件夹放入安装目录(如D:\,目录中最好不要有中文或特殊字符),如图1-13所示。图1-13Tomcat安装目录安装Tomcat点击此处播放微课1.3.2安装Tomcat2.配置Tomcat步骤1

新建系统变量“CATALINA_HOME”,将变量值设置为“D:\apache-tomcat-9.0.68”(可参考1.3.1节),然后编辑“Path”系统变量。步骤2打开“编辑环境变量”对话框,单击“新建”按钮,在新增的文本框中输入“%CATALINA_

HOME%\bin”,然后单击“确定”按钮,如图1-14所示。步骤3

返回“环境变量”对话框,单击“确定”按钮,接着返回“系统属性”对话框,单击“确定”按钮,即可完成配置。图1-14编辑“Path”环境变量1.3.3安装MySQL1.下载和安装MySQL步骤1访问/downloads/mysql,在打开的下载页面中单击“Windows(x86,64-bit),ZIPArchive”中的“Download”按钮,如图1-15所示。安装MySQL图1-15下载MySQL点击此处播放微课1.3.3安装MySQL1.下载和安装MySQL步骤2

在打开的页面中单击“Nothanks,juststartmydownload.”链接文字,下载安装包,如图1-16所示。图1-16跳过登录1.3.3安装MySQL1.下载和安装MySQL步骤3

解压下载好的安装包,将“mysql-8.0.30-winx64”文件夹放入安装目录(如D:\,目录中最好不要有中文或特殊字符),如图1-17所示。图1-17MySQL安装目录1.3.3安装MySQL1.下载和安装MySQL步骤4在搜索框中输入“cmd”命令,打开搜索页面,然后选择“命令提示符”→“以管理员身份运行”选项,如图1-18所示。图1-18以管理员身份打开命令提示符窗口1.3.3安装MySQL1.下载和安装MySQL步骤5

以管理员身份打开命令提示符窗口,切换至MySQL的bin目录中,如图1-19所示。图1-19命令行模式切换至bin目录1.3.3安装MySQL1.下载和安装MySQL步骤6输入“mysqld--initialize-insecure”命令,初始化数据库;然后输入“mysqld--install”命令,安装服务器,如图1-20所示。图1-20安装服务器1.3.3安装MySQL2.启动和修改密码步骤1输入“netstartmysql”命令启动MySQL服务,如图1-21所示。图1-21启动MySQL服务提示通过输入“netstopmysql”命令可以停止MySQL服务。1.3.3安装MySQL2.启动和修改密码步骤2输入“mysql-uroot-p”命令,首次登录直接按回车键进入,如图1-22所示。图1-22首次登录1.3.3安装MySQL2.启动和修改密码步骤3

输入“alteruser'root'@'localhost'identifiedby'123456';”命令修改登录密码为“123456”;输入“flushprivileges;”命令刷新数据库;输入“exit;”命令退出数据库,如图1-23所示。图1-23修改密码1.3.4安装Eclipse1.下载和安装Eclipse步骤1访问/downloads,在打开的Eclipse下载页面中单击“Downloadx86_64”按钮,如图1-24所示。图1-24下载页面安装Eclipse点击此处播放微课1.3.4安装Eclipse1.下载和安装Eclipse步骤2

打开镜像文件下载页面,Eclipse服务器会根据客户端所在的地理位置,分配合理的下载镜像站点,单击“Download”按钮,下载镜像文件,如图1-25所示。图1-25镜像文件下载页面提示如果在默认的镜像站点无法下载Eclipse,可选择“SelectAnotherMirror”选项(见图1-25),在下拉列表中重新选择镜像站点进行下载。1.3.4安装Eclipse1.下载和安装Eclipse步骤3双击下载好的eclipse-inst-jre-win64.exe文件,在打开的对话框中选择“EclipseIDEforEnterpriseJavaandWebDevelopers”选项,如图1-26所示。图1-26选择安装类型1.3.4安装Eclipse1.下载和安装Eclipse步骤

4显示安装路径设置界面,在“InstallationFolder”文本框中设置安装路径,其他使用默认设置,然后单击“INSTALL”按钮,如图1-27所示。图1-27设置安装路径1.3.4安装Eclipse1.下载和安装Eclipse步骤5显示用户协议界面,单击“AcceptNow”按钮,如图1-28所示。图1-28接受用户协议1.3.4安装Eclipse1.下载和安装Eclipse步骤6显示安装界面,安装完成后,单击“LAUNCH”按钮,如图1-29所示。图1-29安装软件完成1.3.4安装Eclipse1.下载和安装Eclipse步骤7打开工作台路径设置窗口,在“Workspace”文本框中设置工作台的路径,并勾选“Usethisasthedefaultanddonotaskagain”复选框,将此路径设置为工作台默认路径,然后单击“Launch”按钮,即可完成安装,如图1-30所示。图1-30设置工作台的路径1.3.4安装Eclipse2.安装中文简体语言包步骤

1访问/babel/downloads.php,在打开的下载页面中选择“BabelLanguagePackZips”→“LatestRelease”选项,如图1-31所示。图1-31下载页面1.3.4安装Eclipse2.安装中文简体语言包步骤2

打开下载列表页面,选择“Language:Chinese(Simplified)”→“BabelLanguagePack-eclipse-zh_4.22.0.v20211218020001.zip”(中文简体语言包)选项,如图1-32所示。图1-32下载列表页面1.3.4安装Eclipse2.安装中文简体语言包步骤3

打开镜像文件下载页面,下载语言包的镜像文件(可参考Eclipse的下载)。步骤4解压下载好的压缩包,将解压后的eclipse文件夹下features和plugins文件夹复制到Eclipse安装目录的dropins子目录下,如图1-33所示。步骤5

重启Eclipse,即可完成汉化操作。图1-33中文简体语言包文件夹放置位置1.3.4安装Eclipse3.在Eclipse中配置Tomcat步骤1

启动Eclipse,将工作窗口下方的控制台切换到“Servers”选项卡,然后单击“Noserversareavailable.Clickthislinktocreateanewserver”链接文字,新建服务,如图1-34所示。图1-34新建服务1.3.4安装Eclipse3.在Eclipse中配置Tomcat步骤2打开“NewServer”窗口,在“Apache”的下拉列表中选择“Tomcatv9.0Server”选项,然后单击“下一步”按钮,如图1-35所示。图1-35选择Tomcat版本提示如果找不到“Servers”选项卡,可在Eclipse工作窗口的菜单栏中选择“窗口”→“显示视图”→“Servers”选项。1.3.4安装Eclipse3.在Eclipse中配置Tomcat步骤3

显示“TomcatServer”界面,单击“Browse”按钮,选择Tomcat安装目录,然后在“JRE”的下拉列表中选择“jdk-”(JDK的版本号)选项,单击“完成”按钮,如图1-36所示。图1-36设置Tomcat安装路径和JDK版本1.3.4安装Eclipse3.在Eclipse中配置Tomcat步骤4返回Eclipse工作窗口,在“Servers”选项卡中显示“Tomcatv9.0Serveratlocalhost[Stopped,Republish]”,表示在Eclipse中成功添加Tomcat服务,且该服务处于停止状态,如图1-37所示。图1-37添加Tomcat服务1.3.4安装Eclipse3.在Eclipse中配置Tomcat步骤5双击“Servers”选项卡中的服务,上方会显示“Tomcatv9.0Serveratlocalhost”选项卡,在“ServerLocations”下勾选“UseTomcatinstallation”单选钮,在“Deploypath”文本框中输入“webapps”,然后保存设置并关闭该选项卡,即可完成在Eclipse中配置Tomcat,如图1-38所示。图1-38配置Tomcat服务1.3.4安装Eclipse3.在Eclipse中配置Tomcat提示如果想要在Eclipse中执行Tomcat服务的操作,可右击“Servers”选项卡中的Tomcat服务,然后在弹出的快捷菜单中选择相应的菜单项。例如,选择“Start”菜单项启动服务,选择“Stop”菜单项停止服务,选择“Publish”菜单项在服务中部署项目,选择“AddandRemove”菜单项在服务中添加和移除项目。课堂小结1.安装JDK2.安装Tomcat3.安装MySQL4.安装Eclipse综合案例——在Eclipse中创建JavaWeb项目1.案例内容了解了企业级应用的概念和解决方案,并在Windows中搭建了JavaEE企业级应用开发环境后,就可以创建新项目进行开发了。本案例将在Eclipse中创建一个简单的JavaWeb项目,并在Tomcat服务器中运行。2.案例分析(1)在Eclipse中创建JavaWeb项目。(2)新建JSP文件,并编辑代码,实现在浏览器页面显示“第一个JavaWeb项目”。(3)在Tomcat服务器中运行程序,并在Eclipse内置浏览器中显示运行结果。3.案例实施下面介绍使用Eclipse创建一个JavaWeb项目,并在Tomcat服务器中运行程序的方法。综合案例——在Eclipse中创建JavaWeb项目步骤1启动Eclipse,在工作窗口的菜单栏中选择“文件”→“新建”→“DynamicWebProject”菜单项,如图1-39所示。图1-39创建新项目综合案例——在Eclipse中创建JavaWeb项目步骤2

打开“NewDynamicWebProject”窗口,在“Projectname”文本框中输入项目名,如“WebDemo”,其他保持默认设置,然后单击“下一步”按钮,如图1-40所示。步骤3

显示“Java”界面,保持默认设置,单击“下一步”按钮。图1-40命名项目综合案例——在Eclipse中创建JavaWeb项目步骤4

显示“WebModule”界面,勾选“Generateweb.xmldeploymentdescriptor”复选框,生成Web项目的XML配置文件,然后单击“完成”按钮,如图1-41所示。图1-41生成XML配置文件综合案例——在Eclipse中创建JavaWeb项目步骤5返回Eclipse工作窗口,在左侧的“项目资源管理器”中显示创建的“WebDemo”项目,展开可看到其目录结构,如图1-42所示。图1-42项目目录结构综合案例——在Eclipse中创建JavaWeb项目步骤6右击项目“WebDemo”,在弹出的快捷菜单中选择“新建”→“JSPFile”菜单项,如图1-43所示。图1-43新建JSP文件综合案例——在Eclipse中创建JavaWeb项目步骤7

打开“NewJSPFile”窗口,在“文件名”文本框中输入JSP文件名,如“firstDemo.jsp”,然后单击“完成”按钮,如图1-44所示。图1-44命名文件综合案例——在Eclipse中创建JavaWeb项目步骤8显示“firstDemo.jsp”代码编辑界面,可看到JSP文件的模板,如图1-45所示。图1-45代码编辑界面综合案例——在Eclipse中创建JavaWeb项目步骤9进入“firstDemo.jsp”代码编辑界面,将“ISO-8859-1”都修改为“UTF-8”,以解决Web页面中文乱码问题,然后在body标签中添加h1标签,如“<h1>第一个JavaWeb项目</h1>”,如图1-46所示。图1-46编辑代码综合案例——在Eclipse中创建JavaWeb项目步骤10在“Servers”选项卡中右击服务,在弹出的快捷菜单中选择“AddandRemove”菜单项,如图1-47所示。图1-47在服务中添加项目综合案例——在Eclipse中创建JavaWeb项目步骤11打开“AddandRemove”对话框,在“Available”列表框中选择“WebDemo”选项,单击“Add”按钮,将项目添加到“Configured”列表框中,然后单击“完成”按钮,如图

1-48所示。图1-48选择项目综合案例——在Eclipse中创建JavaWeb项目步骤12返回Eclipse工作窗口,在“Servers”选项卡中右击服务,在弹出的快捷菜单中选择“Start”菜单项,如图1-49所示。图1-49程序运行结果综合案例——在Eclipse中创建JavaWeb项目步骤

13打开浏览器,访问http://localhost:8080/WebDemo/firstDemo.jsp,在浏览器中显示程序运行结果,如图1-50所示。图1-50程序运行结果提示也可在Eclipse工作窗口的菜单栏选择“运行”→“运行方式”→“RunonServer”菜单项,或者右击项目,在弹出的快捷菜单中选择“运行方式”→“RunonServer”菜单项,打开浏览器查看运行结果。文旌客服对课件有修改、优化建议,作业布置遇到问题,想免费使用平台或免费建课,请扫描右侧二维码,添加客服微信解决文旌客服联系方式谢谢观看JAVAEE企业级应用开发案例教程(Spring+SpringMVC+MyBatis)授课:某某时间:20XX.XXJAVAEEJAVAEEPart02Spring基础本章导读Spring致力于解决JavaEE应用中的各种问题,熟练使用Spring已经是Java开发者的必备技能之一。Spring具有良好的分层结构设计,它克服了EJB技术臃肿、低效的劣势,极大地简化了Java开发中的技术复杂性。学习目标知识目标了解Spring的优点和体系结构。了解Spring的下载方法和目录结构。理解Spring的控制反转和依赖注入。了解SpringIoC容器的工作原理和常用接口。技能目标能创建Java项目实现Spring的简单应用。素质目标通过了解Spring的产生和发展,养成思考和分析问题的习惯,培养创新能力。目录|ContentsSpring概述2.1Spring下载及目录结构2.2SpringIoC容器2.301Spring概述2.1.1Spring的优点Spring的核心理念是控制反转(inverseofcontrol,IoC)和面向切面编程(aspectorientedprogramming,AOP),它是一种基于类的对象(即Bean)的编程,通过IoC容器管理Bean来实现Java应用的开发。(1)非侵入式设计。(2)方便解耦、简化开发。(3)支持AOP。(4)支持声明式事务管理。(5)方便程序测试。(6)支持各种优秀框架集成。(7)降低API的使用难度。2.1.1Spring的优点早期的J2EE(JavaEE)以企业Java组件(enterpriseJavabeans,EJB)为核心,但它在实际开发过程中存在种种弊端,如使用复杂、代码臃肿、代码侵入性强、开发周期长、移植难度大等。RodJohnson在其2002年编著的畅销书《ExpertOne-on-OneJ2EEDesignandDevelopment》中,针对EJB各种臃肿的结构进行了逐一分析和否定,并分别以更加简洁的方式进行了替换。在此书中,RodJohnson展示了如何在不使用EJB的情况下构建一个高质量、可扩展的Java应用程序。为了构建应用程序,他编写了超3万行基础结构代码,项目中的根包命名为erface21。后来,RodJohnson将erface21的代码开源,并将这个新框架命名为Spring。2004年4月,Spring1.0版本正式发布。到目前为止,Spring已经发展到了第5个大版本,即Spring5。2.1.2Spring的体系结构图2-1Spring的体系结构Spring采用分层架构,根据不同的功能划分为多个模块。Spring5的体系结构如图2-1所示。Spring的每个模块都可以单独实现,也可以与其他模块联合实现,在开发过程中可以根据需求有选择地使用模块。2.1.2Spring的体系结构1.DataAccess/Integration(数据访问/集成)(1)JDBC模块:提供了一个JDBC抽象层,支持数据库的资源管理和错误处理,大大简化了对数据库操作的编程。(3)XOM模块:支持对象/XML映射的抽象层实现,如JAXB、Castor、XMLBeans、JiBX和XStream等。(5)Transactions模块:提供了事务管理功能,支持Spring自动处理声明式事务。(4)JMS模块:提供了Java生产和消费消息功能,从Spring4.1开始,支持Messaging模块的集成。(2)ORM模块:支持流行的对象关系映射API的集成,包括JPA、JDO和Hibernate等。2.1.2Spring的体系结构2.Web(网络)01040302Web模块:为Spring提供了最基础的Web支持,通过Servlet监听器来初始化IoC容器和Web应用上下文。WebSocket模块:提供了Socket通信和Web端推送功能。WebFlux模块:Spring5.0版本以后新增的模块,用于建立异步的非阻塞事件驱动服务,并具有良好的扩展性。WebMVC模块:实现了SpringMVC的Web应用。2.1.2Spring的体系结构3.CoreContainer(核心容器)Spring的上下文模块,建立在Beans和Core模块之上,它继承了Beans模块,并扩展了BeanFactory接口的功能,Context模块:提供了强大的表达式语言,用于在运行时查询和操作对象图。Expression模块:提供了BeanFactory接口,实现了SpringIoC容器。Beans模块:Spring的核心模块,提供了框架的基本组成部分,包括控制反转和依赖注入功能。Core模块:010302042.1.2Spring的体系结构4.其他模块AOP模块:支持面向切面编程,允许定义方法拦截器和接入点,将代码按照功能进行分离,以降低耦合性。Test模块:支持程序单元测试和集成测试。Messaging模块:支持消息传递体系结构和协议。Aspects模块:支持与AspectJ的集成,AspectJ是一个功能强大且成熟的AOP框架,为AOP提供了多种实现方法。Instrumentation模块:支持在特定的应用服务器中使用代理类,实现AOP功能,它是AOP的一个支援模块。0105040203课堂小结1.

Spring的优点2.

Spring的体系结构02Spring下载及目录结构Spring下载及目录结构Spring是一个独立的框架,在使用前需要下载它的JAR包,可通过https://repo.spring.io/libs-release-local/org/springframework/spring下载。访问该网址,就可以看到Spring各版本压缩包的下载链接。由于Spring的最新稳定版本为5.3.22,所以单击“5.3.22”链接,然后在下载页面单击“spring-5.3.22-dist.zip”链接进行下载,如图2-2所示。图2-2下载Spring的JAR包Spring下载及目录结构解压下载后的压缩包文件,将生成spring-framework-5.3.22文件夹,其目录结构如图2-3所示。图2-3Spring文件夹的目录结构Spring下载及目录结构Spring文件夹中包含3个子文件夹,其具体介绍如下。(1)docs文件夹:存放Spring的相关文档,包括开发指南、API参考文档等。(2)libs文件夹:存放Spring开发所需的JAR包和源代码。Spring5.3.22由22个模块组成,每个模块提供3个压缩包,分别为以5.2.33.jar结尾的Spring的class文件压缩包、以5.3.22-javadoc.jar结尾的Spring文档压缩包、以5.3.22-sources.jar结尾的Spring源文件压缩包。(3)schema文件夹:存放Spring各种配置文件的XMLSchema文档。此外,使用Spring开发时,其核心容器还依赖commons.logging的JAR包,可通过/proper/commons-logging/download_logging.cgi下载。访问该网址,单击“commons-logging-1.2-bin.zip”链接进行下载(见图2-4),解压下载后的压缩包文件即可找到commons-logging-1.2.jar。Spring下载及目录结构图2-4下载commons.logging的JAR包03SpringIoC容器2.3.1SpringIoC容器概述在传统的面向对象编程中,获取对象的方式是应用程序使用关键字new主动创建一个对象,然后通过对象调用其属性或方法。使用Spring后,对象不再由应用程序创建,而是由Spring的IoC容器来创建并建立它们之间的依赖关系,然后应用程序从IoC容器获取对象。这样,控制权由应用程序转移到了IoC容器,发生了反转,这就是Spring的IoC。IoC只是面向对象编程的一个设计原则,依赖注入(dependencyinjection,DI)则是IoC核心功能的一种实现方式,而IoC容器就是具有依赖注入功能的容器,它在运行期间动态地将某种依赖资源注入对象中,如将参数值或对象B注入(赋值给)对象A的属性。SpringIoC容器概述点击此处播放微课2.3.1SpringIoC容器概述SpringIoC容器是Bean的创建者和管理者,它的工作原理如图2-5所示。图2-5SpringIoC容器的工作原理2.3.1SpringIoC容器概述(1)在应用程序中定义Bean的实现类,如Bean1、Bean2等,然后通过XML文件、注解和Java类等方式配置Bean的信息。(2)启动Spring时,SpringIoC容器加载配置文件,读取Bean的配置信息,然后在容器中建立Bean定义注册表。(3)SpringIoC容器根据注册表通过Bean的实现类实例化Bean,并建立Bean之间的依赖关系。(4)SpringIoC容器将Bean放入Bean缓存池中备用。(5)应用程序中的调用者从SpringIoC容器中获取Bean实现程序功能。2.3.2SpringIoC容器的常用接口SpringIoC容器的实现主要基于BeanFactory接口和ApplicationContext接口。SpringIoC容器的常用接口点击此处播放微课2.3.2SpringIoC容器的常用接口1.BeanFactory接口BeanFactory接口是SpringIoC容器最基本的接口,采用了Java经典的工厂模式。BeanFactory接口提供了创建和管理Bean的方法,其中最常用的是getBean()方法,用于获取Bean,其常用的语法格式如下。//通过Bean的唯一标识或名称获取BeangetBean(Stringname)//通过Bean的唯一标识或名称,以及实现类类型获取BeangetBean(Stringname,Class<T>type)例如,Bean的实现类为User,唯一标识为user,想要获取该Bean,可以通过下面两种方法实现。Useruser1=(User)context.getBean("user");Useruser2=context.getBean("user",User.class);2.3.2SpringIoC容器的常用接口1.BeanFactory接口Spring提供了BeanFactory接口的实现类,其中最常用的是XmlBeanFactory类,它可以读取XML配置文件,并根据其中的配置信息生成BeanFactory接口的实例,其语法格式如下。。BeanFactorybeanFactory=newXmlBeanFactory(newFileSystemResource(StringconfigLocation))其中,configLocation表示XML配置文件的路径和名称,如“D:/applicationContext.xml”。2.3.2SpringIoC容器的常用接口2.ApplicationContext接口ApplicationContext接口继承自BeanFactory接口,它对BeanFactory接口的功能做了许多扩展,添加了国际化、资源访问、事件传播等功能。Spring提供了以下两个常用的ApplicationContext接口的实现类。(1)ClassPathXmlApplicationContext类:从类路径(即相对路径)加载XML配置文件,并实例化ApplicationContext接口,其语法格式如下。ApplicationContextcontext=newClassPathXmlApplicationContext(StringconfigLocation)(2)FileSystemXmlApplicationContext类:从指定的文件系统路径(即绝对路径)加载XML配置文件,并实例化ApplicationContext接口,其语法格式如下。ApplicationContextcontext=newFileSystemXmlApplicationContext(StringconfigLocation)课堂小结1.SpringIoC容器概述2.

SpringIoC容器的常用接口综合案例——Spring入门程序1.案例内容前面已经学习了Spring的基础知识,了解了IoC容器的工作原理和常用接口,接下来通过Spring入门程序,演示Spring的简单应用。本案例将创建一个简单的Java项目,实现控制台输出“张三,欢迎使用学生管理系统!”。提示Spring篇的案例只用到了Spring,没有使用SpringMVC等其他技术。为简化构建项目步骤,Spring篇的案例都是基于Java项目设计的。综合案例——Spring入门程序2.案例分析(1)在Eclipse中,创建一个Java项目spring,并在项目下创建com.spring.student.welcome包和resources源文件夹。其中,com.spring.student.welcome包存放Java文件,resources源文件夹存放XML配置文件。(2)在com.spring.student.welcome包中创建Bean的实现类,实现根据姓名输出欢迎语。(3)在resources源文件夹中创建配置文件,然后在文件中定义Bean,并为Bean的姓名属性注入值。(4)在com.spring.student.welcome包中创建执行类,并在类中加载配置文件,然后通过getBean()方法获取Bean,最后通过Bean调用方法输出欢迎语。综合案例——Spring入门程序3.案例实施步骤1

启动Eclipse,在工作窗口的菜单栏中选择“文件”→“新建”→“项目”菜单项,如图2-6所示。图2-6创建项目综合案例——Spring入门程序步骤2打开“新建项目”窗口,选择“Java项目”选项,然后单击“下一步”按钮,如图2-7所示。图2-7选择Java项目综合案例——Spring入门程序步骤

3打开“新建Java项目”窗口,在“项目名”文本框中输入项目名,如“spring”,其他保持默认设置,勾选“UsedefaultJRE‘jdk-’andworkspacecompilerpreferences”单选钮,然后单击“完成”按钮,如图2-8所示。图2-8设置项目综合案例——Spring入门程序步骤

4在spring项目下创建lib文件夹,将Spring的4个基本包(spring-core-5.3.22.jar、spring-beans-5.3.22.jar、spring-context-5.3.22.jar和spring-expression-5.3.22.jar)和一个依赖包(commons-logging-1.2.jar)复制到该lib文件夹中。提示Spring的4个基本包可在Spring的JAR包spring-framework-5.3.22下的libs文件夹中查找。综合案例——Spring入门程序步骤5

在Eclipse工作窗口中,选中spring项目lib文件夹中的所有JAR包并右击,在弹出的快捷菜单中选择“构建路径”→“添加至构建路径”菜单项,如图2-9所示。图2-9添加JAR包至构建路径综合案例——Spring入门程序步骤

6

在spring项目下创建com.spring.student.welcome包,并在包中创建Bean的实现类Welcome。在类中,定义姓名(name)属性,然后定义setName()方法设置属性信息,以及show()方法输出欢迎语。实现代码如下。packagecom.spring.student.welcome;publicclassWelcome{ privateStringname; //定义属性 publicvoidsetName(Stringname){ //定义设置属性信息方法 =name; } publicvoidshow(){ //定义输出欢迎语方法 System.out.println(name+",欢迎使用学生管理系统!"); }}综合案例——Spring入门程序步骤7

在spring项目下创建resources源文件夹,并在源文件夹中创建配置文件welcome.xml。在文件中使用<bean>元素定义Bean,并为Bean的name属性注入值。实现代码如下。<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="/schema/beans" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/schema/beans /schema/beans/spring-beans.xsd"> <!--定义Bean,唯一标识id为welcome,指定Bean的实现类为Welcome--> <beanid="welcome"class="com.spring.student.welcome.Welcome"> <!--为Bean的name属性注入值“张三”--> <propertyname="name"value="张三"/> </bean></beans>综合案例——Spring入门程序提示在spring项目下创建包或源文件夹时,右击Eclipse工作窗口中的spring项目,在弹出的快捷菜单中选择“新建”→“包”/“源文件夹”菜单项即可。在resources源文件夹中创建XML文件时,右击resources源文件夹,在弹出的快捷菜单中选择“新建”→“其他”菜单项,打开“选择向导”对话框,然后选择“XML”选项,在展开的列表中选择“XMLFile”即可。welcome.xml文件的第2~5行是Spring的约束配置,可在配套的素材与实例中源代码的XML文件或Spring的帮助文档中(使用浏览器打开“spring-framework-5.3.22\docs\reference\html\core.html”)查找并复制。综合案例——Spring入门程序步骤8在com.spring.student.welcome包中创建执行类WelcomeTest,通过ClassPathXmlApplicationContext类加载welcome.xml配置文件初始化Spring容器,然后通过容器的getBean()方法获取Bean实例welcome,接着通过welcome调用show()方法,最后关闭容器。实现代码如下。packagecom.spring.student.welcome;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.AbstractApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;综合案例——Spring入门程序publicclassWelcomeTest{ publicstaticvoidmain(String[]args){ //加载welcome.xml配置文件 ApplicationContextcontext; context=newClassPathXmlApplicationContext("welcome.xml"); //通过容器获取Bean实例welcome Welcomewelcome=(Welcome)context.getBean("welcome"); welcome.show(); //关闭容器 ((AbstractApplicationContext)context).close(); }}综合案例——Spring入门程序步骤9

执行WelcomeTest类,程序运行结果如图2-10所示。图2-10综合案例程序运行结果文旌客服对课件有修改、优化建议,作业布置遇到问题,想免费使用平台或免费建课,请扫描右侧二维码,添加客服微信解决文旌客服联系方式谢谢观看JAVAEE企业级应用开发案例教程(Spring+SpringMVC+MyBatis)授课:某某时间:20XX.XXJAVAEEJAVAEEPart03SpringBean管理本章导读控制反转/依赖注入作为Spring的核心机制,改变了传统的编程习惯,而这些都是通过Bean实现的。如果将SpringIoC容器看作一个大工厂,那么Bean相当于工厂的产品。这个大工厂想要生产和管理Bean,就要明确需要哪些Bean,并以哪种方式装配。学习目标知识目标了解XML格式配置文件的元素和属性。掌握Bean的装配方式。了解Bean的作用域。了解Bean的生命周期。技能目标能使用不同的装配方式实现Bean的装配。素质目标通过学习Bean管理,提高根据不同需求选择合适方法的能力。目录|ContentsBean概述3.1Bean的装配方式3.2Bean的作用域3.3Bean的生命周期3.401Bean概述Bean概述在Spring中,一切Java对象都被视为Bean,用于实现某个具体功能。Bean的依赖关系注入的过程,也称为Bean的装配过程。Bean的装配方式有3种:XML配置文件、注解和Java类。其中,使用Java类装配Bean时,需要创建额外的配置类,不便于类之间的解耦,因此,一般不推荐使用基于Java类的装配方式。Spring中常用的两种装配方式分别是基于XML的装配和基于注解的装配。提示在Spring中,Bean使用前需要实例化。Bean的实例化方式包括构造器实例化、静态工厂实例化和实例工厂实例化。其中,构造器实例化是最常用的方式,本章后面的内容都是基于构造器实例化进行介绍的。02Bean的装配方式3.2.1基于XML的装配Bean的定义和管理都可以通过Bean的配置文件实现。Spring容器支持XML和Properties两种格式的配置文件。由于XML使用标准的数据传输和存储格式,便于查看和操作数据,所以在实际开发中常用XML格式的配置文件。在Spring中,XML配置文件的根元素是<beans>,<beans>元素又包含多个<bean>子元素。每个<bean>子元素可以定义一个Bean,并描述该Bean的装配方式。SpringIoC容器概述点击此处播放微课3.2.1基于XML的装配属性说明idBean的唯一标识,其属性值不能重复,通过id属性值可以配置和管理Bean,也可以获取BeannameBean的名称标识,可以指定多个名称,每个名称之间用逗号或分号隔开,其他用法与id类似class指定Bean的实现类,其属性值为类路径scope指定Bean的作用范围,常用的属性值为singleton(单例)和prototype(原型)autowire指定Bean的自动装配方式,可设置为以下值。(1)no:默认值,不进行Bean的自动装配。(2)byName:根据id或name属性值自动装配。(3)byType:根据属性类型自动装配。(4)constructor:根据构造方法参数的数据类型进行byType模式的自动装配。(5)default:由上级<beans>元素的default-autowire属性值确定init-method指定Bean初始化后节点的监控方法destroy-method指定Bean销毁前节点的监控方法表3-1<bean>元素常用的属性3.2.1基于XML的装配表3-2<bean>元素常用的子元素元素说明<constructor-arg>通过Bean实现类的构造方法的参数设置其属性值,有以下几个属性。(1)name:指定构造参数名称。(2)index:指定构造参数序号,从0开始。(3)type:指定构造参数类型。(4)ref:设置构造参数值,为一个Bean的引用,即<bean>元素中的id或name属性值。(5)value:设置构造参数值,为常量值。此外,ref和value也可以作为其子元素设置构造参数值<property>通过Bean实现类中的setter方法设置其属性值,有name、ref和value属性,其用法与<constructor-arg>元素类似基于XML配置文件,Spring容器提供了两种装配方式:setter方法注入和构造方法注入。3.2.1基于XML的装配1.setter方法注入使用setter方法注入时,首先会调用Bean实现类的默认构造方法实例化Bean,然后通过Java的反射机制调用setXxx()方法来注入属性值,大致步骤如下。(1)在Bean的实现类中提供一个默认的无参构造方法(在没有有参构造方法的情况下,可省略),并为所有需要注入的属性提供一个setXxx()方法,这两项为必须满足的条件。(2)在XML配置文件中,通过<beans>元素及其<bean>子元素定义Bean。(3)在<bean>元素内使用<property>子元素注入各个属性的值。3.2.1基于XML的装配1.setter方法注入【例3-1】使用setter方法注入奶茶和饮品店信息,输出饮品订单信息。【问题分析】

首先创建两个Bean实现类,分别为奶茶信息类BubbleTea和饮品店类Shop;然后创建配置文件setter.xml,在文件中定义两个Bean并为其属性注入值;最后创建执行类SetterTest,在类的main()方法中获取Shop类的Bean,并调用其方法输出饮品订单信息。3.2.1基于XML的装配1.setter方法注入【案例实施】(1)在spring项目下创建com.spring.bean.setter包;在包中创建BubbleTea类;在类中,定义奶茶名(drinkName)、规格(size)、温度(ice)和甜度(sugar)4个属性及其对应的setXxx()和getXxx()方法。实现代码如下。3.2.1基于XML的装配1.setter方法注入packagecom.spring.bean.setter;publicclassBubbleTea{//定义属性privateStringdrinkName;privateStringsize;privateStringice;privateStringsugar;//定义setXxx()方法设置属性值publicvoidsetDrinkName(StringdrinkName){ this.drinkName=drinkName;}publicvoidsetSize(Stringsize){ this.size=size;}publicvoidsetIce(Stringice){ this.ice=ice;}publicvoidsetSugar(Stringsugar){ this.sugar=sugar; }3.2.1基于XML的装配1.setter方法注入//定义getXxx()方法获取属性值publicStringgetDrinkName(){ returndrinkName;}publicStringgetSize(){ returnsize;}publicStringgetIce(){ returnice;}publicStringgetSugar(){ returnsugar;}}3.2.1基于XML的装配1.setter方法注入(2)在com.spring.bean.setter包中创建Shop类;并在类中定义店铺名(shopName)和BubbleTea类对象(bubbleTea)两个属性及其对应的setXxx()方法;然后定义showOrderInfo()方法;在方法中调用BubbleTea类的getXxx()方法获取其属性值,并输出订单信息。实现代码如下。packagecom.spring.bean.setter;publicclassShop{ //定义属性 privateStringshopName; privateBubbleTeabubbleTea;3.2.1基于XML的装配1.setter方法注入 //定义setXxx()方法设置属性值 publicvoidsetShopName(StringshopName){ this.shopName=shopName; } publicvoidsetBubbleTea(BubbleTeabubbleTea){ this.bubbleTea=bubbleTea; } //定义方法输出订单信息 publicvoidshowOrderInfo(){ System.out.println("订单信息:"+shopName+""+bubbleTea.getDrinkName()+"" +bubbleTea.getSize()+""+bubbleTea.getIce()+""+bubbleTea.getSugar()); }}3.2.1基于XML的装配1.setter方法注入(3)在spring项目的resources源文件夹中创建setter.xml配置文件,并在文件中定义两个Bean。第一个Bean设置id属性值为bubbleTea,实现类为BubbleTea类,然后使用<property>子元素为bubbleTea的属性注入值;第二个Bean设置id属性值为shop,实现类为Shop类,同样使用<property>子元素为shop的属性注入值,其中bubbleTea属性的值通过ref属性赋值为Bean实例bubbleTea。实现代码如下。<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="/schema/beans" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/schema/beans /schema/beans/spring-beans.xsd">3.2.1基于XML的装配1.setter方法注入

<!--定义Bean,id属性值为bubbleTea,指定Bean的实现类为BubbleTea--> <beanid="bubbleTea"class="com.spring.bean.setter.BubbleTea"> <!--为bubbleTea的属性注入值--> <propertyname="drinkName"value="红豆奶茶"/> <propertyname="size"value="大杯"/> <propertyname="ice"value="去冰"/> <propertyname="sugar"value="3分糖"/> </bean>3.2.1基于XML的装配1.setter方法注入 <!--定义Bean,id属性值为shop,指定Bean的实现类为Shop--> <beanid="shop"class="com.spring.bean.setter.Shop"> <!--为shop的属性注入值,其中ref属性赋值为Bean实例bubbleTea--> <propertyname="shopName"value="小小奶茶店"/> <propertyname="bubbleTea"ref="bubbleTea"/> </bean></beans>3.2.1基于XML的装配1.setter方法注入(4)在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论