《Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)》_课后习题.docx
《《Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)》_课后习题.docx》由会员分享,可在线阅读,更多相关《《Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)》_课后习题.docx(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一章【思考题】1、 请简述 Spring 框架的优点。2、 请简述什么是 Spring 的 IoC 和 DI。【答案】1、Spring 框架的优点如下:(1) 非侵入式设计:Spring 是一种非侵入式(non-invasive)框架,它可以使应用程序代码对框架的依赖最小化。(2) 方便解耦、简化开发:Spring 就是一个大工厂,可以将所有对象的创建和依赖关系的维护工作都交给 Spring 容器管理,大大的降低了组件之间的耦合性。(3) 支持 AOP:Spring 提供了对 AOP 的支持,它允许将一些通用任务,如安全、事务、日志等进行集中式处理,从而提高了程序的复用性。(4) 支持声明式
2、事务处理:只需要通过配置就可以完成对事务的管理,而无需手动编程。(5) 方便程序的测试:Spring 提供了对 Junit4 的支持,可以通过注解方便的测试 Spring程序。(6) 方便集成各种优秀框架:Spring 不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz 等)的直接支持。(7) 降低了Java EE API 的使用难度:Spring 对Java EE 开发中非常难用的一些AP(I 如:JDBC、JavaMail 等),都提供了封装,使这些 API 应用难度大大降低。2、IoC 的全称是 Inversion o
3、f Control,中文名称为控制反转。控制反转就是指在使用Spring 框架之后,对象的实例不再由调用者来创建,而是由 Spring 容器来创建,Spring 容器会负责控制程序之间的关系,而不是由调用者的程序代码直接控制。这样,控制权由应用代码转移到了 Spring 容器,控制权发生了反转。DI 的全称是 Dependency Injection,中文称之为依赖注入。它与控制反转(IoC)的含义相同,只不过这两个称呼是从两个角度描述的同一个概念。从 Spring 容器的角度来看,Spring容器负责将被依赖对象赋值给调用者的成员变量,这相当于为调用者注入了它依赖的实例, 这就是 Sprin
4、g 的依赖注入。第二章【思考题】1、请简述 Bean 的生命周期。2、请简述 Bean 的几种装配方式的基本用法【答案】1、Bean 的生命周期的整个执行过程描述如下。(1) 根据配置情况调用 Bean 构造方法或工厂方法实例化Bean。(2) 利用依赖注入来完成 Bean 中所有属性值的配置注入。(3) 如果 Bean 实现了 BeanNameAware 接口,则 Spring 调用 Bean 的 setBeanName()方法传入当前 Bean 的 id 值。(4) 如果 Bean 实现了 BeanFactoryAware 接口,则 Spring 调用 setBeanFactory()方法
5、传入当前工厂实例的引用。( 5 ) 如 果 Bean 实 现 了 ApplicationContextAware 接 口 , 则 Spring 调 用setApplicationContext()方法传入当前 ApplicationContext 实例的引用。(6) 如果 BeanPostProcessor 和 Bean 关联,则 Spring 将调用该接口的预初始化方法postProcessBeforeInitialzation()对 Bean 进行加工操作,这个非常重要,Spring 的 AOP 就是用它实现的。(7) 如果 Bean 实现了 InitializingBean 接口,则 S
6、pring 将调用 afterPropertiesSet()方法。(8) 如果在配置文件中通过init-method 属性指定了初始化方法,则调用该初始化方法。(9) 如果有 BeanPsostProcessor 和 Bean 关联,则 Spring 将调用该接口的初始化方法postProcessAfterInitialization()。此时,Bean 已经可以被应用系统使用了。(10) 如果在 中指定了该Bean 的作用范围为 scope=singleton,则将该 Bean 放入 Spring IoC 的缓存池中,将触发Spring 对该 Bean 的生命周期管理;如果在中指定了该 Be
7、an 的作用范围为 scope=prototype,则将该 Bean 交给调用者,调用者管理该Bean的生命周期,Spring 不再管理该 Bean。(11) 如果 Bean 实现了 DisposableBean 接口,则 Spring 会调用 destory()方法将 Spring 中的 Bean 销毁;如果在配置文件中通过 destory-method 属性指定了 Bean 的销毁方法,则Spring 将调用该方法进行销毁。2、Bean 中主要包含三种装配方式,分别为基于XML 的装配,基于 Annotation 的装配和自动装配,这三种装配方式的用法如下:(1) 基于 XML 的装配:S
8、pring 提供了 2 种基于 XML 的装配方式:设值注入(Setter Injection)和构造注入(Constructor Injection)。设置注入中的 Bean 类必须提供一个默认的无参构造方法,同时必须为需要注入的属性提供对应的 setter 方法。使用设值注入时,在Spring 配置文件中,需要使用元素的子元素来为每个属性注入值。使用构造注入时,在配置文件里,需要使用元素的子元素来定义构造方法的参数,可以使用其value 属性(或子元素)来设置该参数的值。(2) 基于Annotation 的装配:使用基于Annotation 的装配时,首先需要使用Repository 、
9、Service 与Constroller 分别对实现类进行标注,然后用Autowired 或Resource 注解对注入的 Bean 的属性进行标注,最后在Spring 的配置文件中,通过来开启注解处理器,或使用的配置方式即可实现 Annotation 的装配。(3) 自动装配:在元素中使用 autowire 属性,并将其属性值设置为byName 或者 byType 即可实现自动装配。第三章【思考题】1、请列举你所知道的 AOP 专业术语并解释。2、请列举你所知道的 Spring 的通知类型并解释。【答案】1、AOP 的专业术语包括 Aspect、Joinpoint、Pointcut、Advi
10、ce、Target Object、Proxy 和Weaving,对于这些专业术语的解释,具体如下:(1) Aspect(切面):在实际应用中,切面通常是指封装的用于横向插入系统功能(如事务、日志等)的类,如图3-1 中的 Aspect。该类要被Spring 容器识别为切面,需要在配置文件中通过元素指定。(2) Joinpoint(连接点):在程序执行过程中的某个阶段点,它实际上是对象的一个操作,例如方法的调用或异常的抛出。在Spring AOP 中,连接点就是指方法的调用。(3) Pointcut(切入点):是指切面与程序流程的交叉点,即那些需要处理的连接点,如图 3-2 所示。通常在程序中,
11、切入点指的是类或者方法名,如某个通知要应用到所有以 add 开头的方法中,那么所有满足这一规则的方法都是切入点。(4) Advice(通知/增强处理):AOP 框架在特定的切入点执行的增强处理,即在定义好的切入点处所要执行的程序代码。可以将其理解为切面类中的方法,它是切面的具体实现。(5) Target Object(目标对象):是指所有被通知的对象,也被称为被增强对象。如果 AOP 框架采用的是动态的 AOP 实现,那么该对象就是一个被代理对象。(6) Proxy(代理):将通知应用到目标对象之后,被动态创建的对象。(7) Weaving(织入):将切面代码插入到目标对象上,从而生成代理对象
12、的过程。2、Spring 中的通知按照在目标类方法的连接点位置,可以分为以下5 种类型:(1) org.aopalliance.intercept.MethodInterceptor(环绕通知)在目标方法执行前后实施增强,可以应用于日志、事务管理等功能。(2) org.springframework.aop.MethodBeforeAdvice(前置通知) 在目标方法执行前实施增强,可以应用于权限管理等功能。(3) org.springframework.aop.AfterReturningAdvice(后置通知)在目标方法执行后实施增强,可以应用于关闭流、上传文件、删除临时文件等功能。(4)
13、 org.springframework.aop.ThrowsAdvice(异常通知)在方法抛出异常后实施增强,可以应用于处理异常记录日志等功能。(5) org.springframework.aop.IntroductionInterceptor(引介通知)在目标类中添加一些新的方法和属性,可以应用于修改老版本程序(增强类)第四章【思考题】1、请简述 Spring JDBC 是如何进行配置的。2、请简述 Spring JdbcTemplate 类中几个常用方法的作用。【答案】1、在 Spring 的配置文件中配置 JDBC 时,需要定义了三个 Bean,分别是 dataSource、jdbc
14、Template 和需要注入类的 Bean。在定义 jdbcTemplate 时,需要将 dataSource 注入到jdbcTemplate 中,而其他需要使用 jdbcTemplate 的 Bean,也需要将 jdbcTemplate 注入到该Bean 中,这样配置完成后,Spring JDBC 就可以使用了。2、在 JdbcTemplate 类中,提供了大量的更新和查询数据库的方法,我们就是使用的这些方法来操作数据库的,其常用的方法包括 execute()、update()和 query()。其中 execute()方法能够完成执行 SQL 语句的功能,update()方法可以完成插入、
15、更新和删除数据的操作, query()方法可以用来处理各种对数据库表的查询操作。第五章【思考题】1、请简述 Spring 中事务管理的两种方式。2、请简述如何使用 Annotation 方式进行声明式事务管理。【答案】1、Spring 中的事务管理分为两种方式:一种是传统的编程式事务管理,另一种是声明式事务管理。其中,编程式事务管理是通过编写代码实现的事务管理,包括定义事务的开始、正常执行后的事务提交和异常时的事务回滚。声明式事务管理是通过AOP 技术实现的事务管理,其主要思想是将事务管理作为一个“切面”代码单独编写,然后通过AOP 技术将事务管理的“切面”代码植入到业务目标类中。声明式事务管
16、理最大的优点在于开发者无需通过编程的方式来管理事务,只需在配置文件中进行相关的事务规则声明,就可以将事务规则应用到业务逻辑中。这使得开发人员可以更加专注于核心业务逻辑代码的编写,在一定程度上减少了工作量,提高了开发效率。2、Spring 的声明式事务管理通过 Annotation(注解)方式来实现时,开发者只需做两件事情:1) 在 Spring 容器中注册事务注解驱动,其代码如下:2) 在需要使用事务的 Spring Bean 类或者 Bean 类的方法上添加注解Transactional。如果将注解添加在 Bean 类上,则表示事务的设置对整个 Bean 类的所有方法都起作用;如果将注解添加
17、在 Bean 类中的某个方法上,则表示事务的设置只对该方法有效。第六章【思考题】1、请简述 MyBatis 框架与 Hibernate 框架的区别。2、请简述 MyBatis 的工作执行流程。【答案】1、Hibernate 和 MyBatis。这两个框架的主要区别如下:(1) Hibernate:是一个全表映射的框架。通常开发者只需定义好持久化对象到数据库表的映射关系,就可以通过 Hibernate 提供的方法完成持久层操作。开发者并不需要熟练的掌握 SQL 语句的编写,Hibernate 会根据制定的存储逻辑,自动的生成对应的SQL,并调用JDBC 接口来执行,所以其开发效率会高于MyBat
18、is。然而Hibernate 自身也存在着一些缺点, 例如它在多表关联时,对 SQL 查询的支持较差;更新数据时,需要发送所有字段;不支持存储过程;不能通过优化 SQL 来优化性能等。这些问题导致其只适合在场景不太复杂且对性能要求不高的项目中使用。(2) MyBatis:是一个半自动映射的框架。这里所谓的“半自动”是相对于 Hibernate 全表映射而言的,MyBatis 需要手动匹配提供 POJO、SQL 和映射关系,而 Hibernate 只需提供 POJO 和映射关系即可。与 Hibernate 相比,虽然使用 MyBatis 手动编写 SQL 要比使用Hibernate 的工作量大,
19、但 MyBatis 可以配置动态 SQL 并优化 SQL,可以通过配置决定 SQL 的映射规则,它还支持存储过程等。对于一些复杂的和需要优化性能的项目来说,显然使用MyBatis 更加合适。2、MyBatis 框架的工作执行流程如下:(1) 读取 MyBatis 配置文件 mybatis-config.xml。(2) 加载映射文件 Mapper.xml。(3) 构建会话工厂。(4) 创建 SqlSession 对象。(5) 使用 Executor 接口来操作数据库。(6) 使用 MappedStatement 类型的参数对映射信息进行封装。(7) 输入参数映射。(8) 输出结果映射。第七章【思
20、考题】1、请简述 MyBatis 核心对象 SqlSessionFactory 的获取方式。2、请简述 MyBatis 映射文件中的主要元素及其作用。【答案】1、SqlSessionFactory 对象的实例可以通过 SqlSessionFactoryBuilder 对象来构建,而SqlSessionFactoryBuilder 则可以通过 XML 配置文件或一个预先定义好的 Configuration 实例构建出 SqlSessionFactory 的实例,通过 XML 配置文件构建出的 SqlSessionFactory 实例,其实现代码如下:/ 读取配置文件InputStream inp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java EE企业级应用开发教程Spring+Spring MVC+MyBatis Java EE企业级应用开发教程Spring+Spring MVC+MyBatis_课后习题 Java EE
链接地址:https://www.taowenge.com/p-92165302.html
限制150内