还剩12页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
springboot期末考试题和答案
一、选择题(本题型共15题,每题2分,共30分)
1.SpringBoot的核心功能不包括以下哪一项?()A.自动配置B.独立运行C.手动编写所有配置文件D.起步依赖
2.下列哪个注解是SpringBoot项目的主启动类必须添加的?()A.@ComponentB.@SpringBootApplicationC.@ControllerD.@Service
3.SpringBoot中,默认的内嵌服务器是?()A.TomcatB.NginxC.ApacheD.Jetty
4.在SpringBoot中,用于指定配置文件位置的参数是?()A.--server.portB.--spring.config.locationC.--spring.profiles.activeD.--logging.level
5.以下关于SpringBoot依赖管理的描述,正确的是?()第1页共14页A.依赖管理通过pom.xml中的parent标签继承SpringBoot的父依赖B.依赖版本号必须显式在pom.xml中指定C.无法排除SpringBoot自动引入的依赖D.依赖管理仅包含核心框架依赖,不包含第三方库
6.下列哪个注解用于将一个类标记为Spring的控制器?()A.@ComponentB.@ControllerC.@ServiceD.@Repository
7.SpringBoot中,配置文件application.yml和application.properties的优先级关系是?()A.ymlpropertiesB.propertiesymlC.两者优先级相同D.取决于文件修改时间
8.以下哪项是SpringBoot自动配置的核心注解,用于组合其他核心注解?()A.@ConfigurationB.@EnableAutoConfigurationC.@ComponentScanD.@SpringBootConfiguration
9.在SpringBoot中,通过@Value注解注入配置文件中的值时,若配置项不存在,会发生什么?()A.编译错误第2页共14页B.运行时抛出NullPointerExceptionC.运行时抛出NoSuchElementExceptionD.注入空字符串
10.SpringBoot整合MyBatis时,需要在pom.xml中添加的依赖是?()A.spring-boot-starter-data-jpaB.mybatis-spring-boot-starterC.spring-boot-starter-jdbcD.spring-boot-starter-web
11.下列关于SpringBoot事务管理的描述,正确的是?()A.默认情况下,所有@Transactional注解的方法都有事务B.事务传播行为默认是REQUIREDC.异常类型必须是RuntimeException才能回滚事务D.多个数据源的事务需要额外配置@EnableTransactionManagement
12.SpringBoot中,用于拦截请求并进行预处理的组件是?()A.FilterB.InterceptorC.ListenerD.Servlet
13.以下哪个类是SpringBoot应用的入口类,包含main方法?()A.控制器类B.服务类C.启动类(标注@SpringBootApplication)D.配置类第3页共14页
14.在SpringBoot中,@SpringBootApplication注解不包含以下哪个注解?()A.@ConfigurationB.@ComponentScanC.@EnableAutoConfigurationD.@EnableWebMvc
15.以下关于SpringBoot启动流程的描述,正确的是?()A.加载配置文件→创建Spring容器→执行main方法→初始化BeanB.执行main方法→加载配置文件→创建Spring容器→初始化BeanC.创建Spring容器→执行main方法→加载配置文件→初始化BeanD.初始化Bean→创建Spring容器→加载配置文件→执行main方法
二、填空题(本题型共15题,每题1分,共15分)
1.SpringBoot的主启动类中,main方法通过调用______方法启动Spring应用上下文
2.SpringBoot的依赖管理通过父依赖spring-boot-dependencies的______标签实现版本统一
3.配置文件application.yml中,键值对的语法格式是______
4.当需要在SpringBoot中使用外部配置文件时,可通过启动参数--spring.config.location=______指定文件路径
5.SpringBoot自动配置的核心原理是通过扫描META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件中的______类,结合条件注解(如@ConditionalOnClass)动态配置Bean
6.在SpringBoot中,表示“如果类路径下存在某个类,则配置生效”的条件注解是______第4页共14页
7.SpringBoot整合Web开发时,默认会自动配置______(填组件名)来处理HTTP请求映射
7.用于在SpringBoot中注入第三方Bean的注解是______
8.当SpringBoot项目需要使用日志时,默认集成的日志框架是______
9.SpringBoot中,数据访问层的@Repository注解是______注解的子类,用于标识数据访问组件
10.配置文件中,server.port的默认值是______
11.若要在SpringBoot中禁用某个自动配置类,可在主启动类上使用@SpringBootApplicationexclude={______.class}
12.SpringBoot的配置文件支持通过______注解将配置项注入到Java类中
13.用于在SpringBoot中定义RESTful接口路径的注解是______结合方法上的请求方式注解(如@GetMapping)
14.SpringBoot的事务管理需要在主启动类上添加______注解开启事务支持判断对错(本题型共10题,每题1分,共10分)
1.SpringBoot必须依赖外部服务器才能运行()
2.@SpringBootApplication注解是@Configuration、@ComponentScan和@EnableAutoConfiguration的组合注解()
3.SpringBoot的自动配置类默认都会生效,无法关闭()
4.配置文件中,yml格式的语法比properties更简洁,且支持复杂数据类型(如列表、对象)()
5.在SpringBoot中,@Value${my.name}注入的my.name必须在配置文件中定义,否则会报错()第5页共14页
6.SpringBoot的起步依赖(starter)本质是将多个相关依赖打包成一个依赖,简化依赖配置()
7.拦截器(Interceptor)和过滤器(Filter)都能拦截所有请求,且执行顺序相同()
8.SpringBoot中,@Transactional注解只能标注在public方法上()
9.多个SpringBoot应用可以共享同一个配置文件()
10.SpringBoot的启动类必须与其他组件类在同一个包下,否则无法扫描到Bean()简答题(本题型共5题,每题5分,共25分)
1.简述SpringBoot的自动配置原理
2.对比SpringBoot中application.yml和application.properties两种配置文件的优缺点
3.说明SpringBoot整合MyBatis的核心步骤
4.简述SpringBoot中事务的传播行为及其默认值
5.在SpringBoot中,如何实现全局异常处理?请写出核心注解和实现方式案例分析题(本题型共2题,每题10分,共20分)案例一以下代码片段来自一个SpringBoot项目的Controller类@RestController@RequestMapping/userpublic classUserController{@Autowiredprivate UserServiceuserService;第6页共14页@GetMapping/{id}public UsergetUserById@PathVariable Longid{return userService.getUserByIdid;}}问题
(1)该Controller类的作用是什么?
(2)@RestController注解的作用是什么?
(3)若访问/user/1时返回404Not Found,从SpringBoot配置角度分析可能的原因案例二SpringBoot项目中,Service层代码如下@Servicepublic classOrderService{@Autowiredprivate OrderMapperorderMapper;@Transactionalpublic voidcreateOrderOrder order{orderMapper.insertorder;if order.getStatus==0{throw newRuntimeException订单状态异常;}orderMapper.updateStatusorder.getId,1;}}第7页共14页问题
(1)该方法的事务是否会回滚?为什么?
(2)若要确保无论订单状态是否异常,updateStatus方法都能执行,应如何修改代码?综合应用题(本题型共1题,每题20分,共20分)需求设计一个SpringBoot项目,实现“用户注册与登录”功能,要求如下
1.项目包含实体类(User)、Controller层(UserController)、Service层(UserService)、数据访问层(UserMapper);
2.使用MySQL数据库存储用户信息,表结构包含id(主键)、username(用户名,唯一)、password(密码,加密存储)、email(邮箱);
3.实现注册接口(POST/user/register),需验证用户名是否已存在,不存在则保存用户(密码需加密);
4.实现登录接口(POST/user/login),需验证用户名和密码,成功返回用户信息(不含密码);
5.要求写出核心代码(实体类、Controller、Service、Mapper、配置文件),并说明关键配置(如数据库连接、密码加密)答案汇总
一、选择题
1.C
2.B
3.A
4.B
5.A
6.B
7.A
8.B
9.C
10.B
11.B
12.B
13.C
14.D
15.B
二、填空题
1.SpringApplication.run
2.dependencyManagement
3.key:value(缩进表示层级)
4.文件路径
5.自动配置
6.@ConditionalOnClass第8页共14页
7.DispatcherServlet
8.@Bean
9.Logback
10.@Component
11.
808012.具体自动配置类全类名(如XXXAutoConfiguration)
13.@ConfigurationProperties
14.@RequestMapping
15.@EnableTransactionManagement判断对错
1.×
2.√
3.×
4.√
5.×
6.√
7.×
8.√
9.×
10.×简答题
1.SpringBoot自动配置原理通过扫描META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件,加载自动配置类;结合@Conditional条件注解(如@ConditionalOnClass、@ConditionalOnMissingBean),当类路径下存在指定类或Bean不存在时,自动配置类中的Bean才会生效,从而实现“按需配置”
2.application.yml优点语法简洁,支持列表、对象等复杂数据类型,缩进表示层级;缺点对缩进敏感,空格错误易导致解析失败application.properties优点格式简单,兼容性好;缺点重复配置项多,不支持复杂数据类型
3.整合MyBatis核心步骤
①添加mybatis-spring-boot-starter依赖;
②在application.yml中配置MyBatis(如mapper.xml路径、实体类别名包);
③创建实体类(User);
④创建Mapper接口(UserMapper)并添加@Mapper注解;
⑤编写Service层调用Mapper接口;
⑥在Controller层注入Service并提供接口
4.事务传播行为指多个事务方法嵌套调用时的事务处理规则,默认值为REQUIRED(如果当前有事务则加入,否则创建新事务);其他传播第9页共14页行为包括SUPPORTS(支持当前事务,无事务则非事务执行)、REQUIRES_NEW(无论有无事务,都创建新事务)等
5.全局异常处理通过@ControllerAdvice注解结合@ExceptionHandler实现在全局异常处理类上标注@ControllerAdvice,定义@ExceptionHandlerException.class方法,方法中处理异常并返回统一响应格式(如错误码、错误信息)案例分析题案例一
(1)提供根据用户ID查询用户信息的接口,路径为/user/{id}
(2)@RestController注解作用将类标记为控制器,默认将方法返回值直接转换为JSON格式(相当于@Controller+@ResponseBody)
(3)可能原因
①UserService未被Spring扫描到(如Service类不在主启动类包或子包下);
②UserMapper接口未添加@Mapper注解;
③数据库中不存在id=1的用户,且userService.getUserById1返回null,导致Controller返回null(前端显示404可能因业务逻辑问题,非配置问题,此处默认配置问题)**案例二
(1)事务会回滚@Transactional默认对RuntimeException及其子类回滚,此处抛出RuntimeException,事务回滚,insert的数据会被撤销
(2)修改方式将updateStatus方法单独提取到另一个无事务的Service方法(如updateOrderStatus),或使用@TransactionalrollbackFor=Exception.class扩大回滚范围,或在throw前执行updateStatus第10页共14页综合应用题核心代码
1.实体类(User.java)public classUser{private Longid;private Stringusername;private Stringpassword;private Stringemail;//getter/setter}
2.Controller层(UserController.java)@RestController@RequestMapping/userpublic classUserController{@Autowiredprivate UserServiceuserService;@PostMapping/registerpublic Resultregister@RequestBody Useruser{return userService.registeruser;}@PostMapping/loginpublic Resultlogin@RequestBody Useruser{return userService.loginuser;}}第11页共14页
3.Service层(UserService.java)public interfaceUserService{Result registerUser user;Result loginUser user;}@Servicepublic classUserServiceImpl implementsUserService{@Autowiredprivate UserMapperuserMapper;@Autowiredprivate PasswordEncoderpasswordEncoder;@Override@Transactionalpublic ResultregisterUseruser{User existUser=userMapper.selectByUsernameuser.getUsername;if existUser!=null{return Result.fail用户名已存在;}user.setPasswordpasswordEncoder.encodeuser.getPassword;userMapper.insertuser;return Result.success注册成功;}@Override第12页共14页public ResultloginUseruser{User dbUser=userMapper.selectByUsernameuser.getUsername;if dbUser==null!passwordEncoder.matchesuser.getPassword,dbUser.getPassword{return Result.fail用户名或密码错误;}User loginUser=new User;loginUser.setIddbUser.getId;loginUser.setUsernamedbUser.getUsername;loginUser.setEmaildbUser.getEmail;return Result.successloginUser;}}
4.Mapper层(UserMapper.java)@Mapperpublic interfaceUserMapper{User selectByUsernameStringusername;void insertUseruser;//XML映射文件或注解实现SQL}
5.配置文件(application.yml)spring:datasource:第13页共14页url:jdbc:mysql://localhost:3306/test_dbuseSSL=falseusername:rootpassword:123456driver-class-name:com.mysql.cj.jdbc.Driverjpa:hibernate:ddl-auto:updatemybatis:mapper-locations:classpath:mapper/*.xmltype-aliases-package:com.example.entityserver:port:
80806.密码加密配置(WebSecurityConfig.java)@Configurationpublic classWebSecurityConfig{@Beanpublic PasswordEncoderpasswordEncoder{return newBCryptPasswordEncoder;}}关键配置数据库连接配置(spring.datasource)、MyBatis配置(mybatis.mapper-locations)、密码加密(BCryptPasswordEncoder)、事务管理(@Transactional)第14页共14页。
个人认证
优秀文档
获得点赞 0