JavaEE 实验一 Spring框架实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告 实践报告□课程名称:软件设计与体系结构R 实验、实践名称:实验一Spring框架实验实验、实践地点:行勉楼C1实验室
专业班级:软件20XX 学号:
学生姓名:
指导教师:
2023 年1 月3日
实验一 Spring框架实验
一、实验目的与要求
掌握Spring框架相关技术,学会Spring框架技术中依赖注入和面向切面编程的软件开发方法。参照课本及参考程序,快速熟悉相关内容,编写基于Spring 框架技术的依赖注入和面向切面编程的相关代码,掌握Spring框架技术中依赖注入和面向切面编程的具体过程和基本要素,具备编写具有松耦合和面向切面特点的应用程序的能力。
二、实验环境
IDEA开发环境
三、实验内容与步骤
1.实验内容:
(1)假设通过StudentController、StudentService和StudentDao等类和接口
完成学生的保存操作,请编程实现相关的接口和类,要求采用Spring框架技术中提供的控制反转和依赖注入的松耦合编程方法,使用基于Annotation 的Bean装配方法来实现相关组件的生成,写出测试程序,运行查看其结果。
(2)使用Spring框架技术的面向切面编程方法,实现对目标方法的环绕通知。
请以用户管理为例(简单模拟即可),实现对用户添加和用户删除方法的环绕通知,模拟在这些方法前进行校验操作,在这些方法之后进行日志处理操作。要求编写目标类、切面类和代理工厂等组件的实现代码和配置文件,编写测试程序,运行并查看结果。
2.实验步骤:
实验1:
(1)在pom.xml文件中导入相关依赖:
(2)创建applicationContext.xml配置文件
(3)定义Dao层,在项目的experiment01包下创建dao包,在dao包下创建
StudentDao接口,并在StudentDao接口中声明save()方法
(4)在项目的experiment01.dao包下创建StudentDaoImpl作为StudentDao的
实现类,并在StudentDaoImpl类中实现StudentDao接口中的save()方法。
(5)定义Service层,在项目的experiment01包下创建service包,在service
包下创建StudentService接口,并在接口中声明save()方法
(6)在项目的experiment01.service包下创建StudentServiceImpl作为
StudentService的实现类,并在StudentServiceImpl类中实现StudentService接口中的save()方法。
(7)定义Controller层,在项目的experiment01包下创建controller包,在该
包下创建StudentController类作为控制层
(8)定义测试类
实验2:
(1)在项目的src/main/java目录下创建一个com.tyut.jdk包,在该包下创建目标类接口UserDao,并在该接口中编写添加、删除的方法。
(2)在com.tyut.jdk包下创建UserDao接口的实现类UserDaoImpl,实现UserDao
接口中的方法。
(3)在项目的src/main/java目录下创建一个com.tyut.aspect包,在该包下创
建MyAspect切片类
(4)在com.tyut.jdk包下创建Jdk代理工厂类JdkProxy
(5)定义测试类
四、实验结果与分析
1.实验1运行结果:
2.实验2运行结果:
五、讨论、心得(遇到的问题与解决办法等)
Spring是一个分层的Java SE/EE一站式轻量级开源框架,其中最为核心的理念是IoC(控制反转)和AOP(面向切面编程),IoC是Spring的基础,它支撑着Spring对JavaBean的管理功能;AOP是Spring 的重要特性,AOP是通过预编译方式和运行期间动态代理实现程序功能,可以在不修改源代码的情况下,给程序统一添加功能。控制反转是从IoC容器的角度描述,即IoC容器控制应用程序,由IoC容器反向地向应用程序注入应用程序所需要的外部资源。这里所说的外部资源可以是外部实例对象,也可以是外部文件对象等。依赖注入就是由IoC 容器在运行期间动态地将某种依赖资源注入对象之中。依赖注入有两种实现方式,一种是构造方法注入,另一种是属性setter方法注入。AOP采用横向抽取机制,将分散在各方法中的重复代码进行提取,在程序编译或运行时,动态的将该部分代码应用到对应的主流代码位置,即将抽取的通用代码和主流程序代码完成动态组合。