Spring-15 Spring Certified Professional 试题整理 ①
Spring Certified Professional 介绍
Spring Certified Professional 2022 的认证考试Spring Professional Develop (2V0-72.22) 是 60道题目,按照等级分方法获得 300 分即为及格。考生有 130 分钟完成考试,其中包括足够的时间让非英语母语人士去完成考试。
最低资格考生
考生建议至少有6到12个月的经验。考生既要有很强的概念理解能力,又有使用 Spring 框架的编程经验。需要了解 Spring 和 Spring Boot 的主要特性,包括用配置、数据访问,REST,AOP,自动配置,执行器,安全性和 Spring 测试框架来构建企业和 微服务应用程序。
考试范围
-
Spring Core
- Spring框架目标介绍
- Java 配置
- 使用Java代码定义Spring Beans
- 访问应用上下文中的bean
- 处理多个配置文件
- 处理Bean之间的依赖关系
- 解释和定义Bean作用域
- 属性和配置文件
- 使用外部属性来控制配置
- 演示配置文件的用途
- 使用 Spring 表达式语言 (SpEL)
- 基于注解的配置和组件扫描
- 解释和使用基于注解的配置
- 讨论最佳配置选择
- 使用@PostConstruct 和@PreDestroy
- 解释和使用原型注解
- Spring Bean生命周期
- 说明Spring Bean生命周期
- 使用 BeanFactoryPostProcessor 和 BeanPostProcessor
- 解释运行中 Spring 代理如何在起作用的
- 描述Spring如何确定bean创建顺序
- 按类型注入 bean 时避免问题
- Aspect Oriented Programming(面向切面编程 )
- 解释 AOP 背后的概念及其解决的问题
- 使用Spring AOP实现和部署Advices(通知)
- 使用 AOP 切入点表达式
- 解释不同类型的 Advice (通知)以及何时使用它们
-
数据管理
- Spring JDBC简介
- 使用和配置Spring的JdbcTemplate
- 使用回调执行查询以处理结果集
- 处理数据访问异常
- 使用 Spring 进行事务管理
- 描述和使用Spring事务管理
- 配置事务的传播特性
- 设置回滚规则
- 在测试中使用事务
- 用于后备存储的 Spring Boot 和 Spring Data
- 使用Spring Boot实现一个Spring JPA应用
- 为 JPA 创建 Spring Data Repositories
- Spring JDBC简介
-
Spring MVC
- 使用 Spring Boot 的 Web 应用程序
- 解释如何使用 Spring Boot 创建 Spring MVC 应用程序
- 描述 REST 请求的基本请求处理生命周期
- 创建一个简单的 RESTful 控制器来处理 GET 请求
- 配置部署
- REST 应用程序
- 创建控制器来支持各种动作的 REST 端点
- 利用 RestTemplate 调用 RESTful 服务
- 使用 Spring Boot 的 Web 应用程序
-
测试
-
测试Spring应用程序
- 使用 JUnit 5 编写测试
- 使用 Spring 编写集成测试
- 使用 Spring Profiles 配置测试
- 扩展 Spring 测试以使用数据库
-
使用 SpringBoot 和 MockMVC 进行高级测试
- 启用 Spring Boot 测试
- 执行集成测试
- 执行 MockMVC 测试
- 执行切片测试
-
-
安全
- 解释基本的安全概念
- 使用Spring Security配置认证和授权
- 定义方法级安全性
-
Spring Boot
-
Spring Boot 特 性 介 绍
- Spring Boot特性讲解和使用
- 描述Spring Boot依赖管理
-
Spring Boot 属性和自动配置
- 描述用于定义和加载属性的选项
- 利用自动配置
- 覆盖默认配置
-
Spring Boot 执 行 器
- 配置Actuator端点
- 保证 Actuator HTTP端点的安全
- 定义自定义指标
- 定义自定义健康指标
-
参考资料
试题
- 如果传播行为是 Propagation.REQUIRES_NEW,哪个说法最能描述传播行为?(选择一项)
-
A.如果存在活动事务,则在嵌套事务中运行;如果没有活动事务,则抛出一个异常
-
B.如果已经存在事务,则支持该事务;如果没有活动事务,则抛出一个异常
-
C.总是启动新事务;如果已经存在活动事务,则暂停该事务
-
D.总是启动新事务;如果已经存在活动事务,则抛出一个异常
-
【正确答案】C
- 关于 Spring 对 JPA 的支持,以下哪个说法是正确的?(选择一项)
(1) Spring 支持结合本地或全局事务管理 JPA PersistenceContexts
(2) JPA 提供者是通过设置 EntityManagerFactoryBean 上的 vendor adapter 属性来指定的
(3) 在管理本地事务时,JpaTransactionManager 使用 JPA EntityManagers 来完成这项工作-
A.第(1)、(2)种说法是正确的
-
B.所有的说法都是正确的
-
C.这些说法都不正确
-
D.第(2)、(3)种说法是正确的
-
E.第(1)、(3)种说法是正确的
-
【正确答案】B
- 以下哪项是对@PropertySource 注解的最佳解释?(选择一项)
-
A.用于方便地从某个外部属性文件中查找并返回单个属性值
-
B.用于从某个外部来源向 Spring Environment 添加一组额外的 name/value 对
-
C.用于指定 Spring Boot 应用程序中 application. properties 文件的位置
-
D.Spring 框架中没有这样的注解
-
【正确答案】B
- 以下关于在 JUnit 集成测试中使用@Transactional 注解的说法中,哪项不是正确的的?(选择一项)
-
A.只有当 test 类或 test 方法被注解为@Commit(false)时,事务才会在测试后回滚出来
-
B.默认情况下,每次测试后,事务将自动回滚
-
C.用@Transactional 来注解 test 类,会使其所有的 test 方法在事务中运行
-
D.用@Transactional 来注解 test 方法,会使 test 方法在事务中运行
-
【正确答案】A
- 考虑下图中的事务服务层类。 @Transactional(timeout=60) public class ClientServiceImpl implements ClientService { @Transactional(timeout=30) public void update1(){} } } 对事务的 update1 方法应用什么超时设置?(选择一项)
-
A.这将无法编译。不能在类级声明 timeout,propagation 以及 isolation 等属性
-
B.30
-
C.60
-
D.90
-
E.这将无法编译。不能在方法级声明 timeout,propagation 以及 isolation 等属性
-
【正确答案】B
- 关于 Spring和单元测试,以下哪个说法是正确的?(选择一项)
-
A.Spring提取了现有的Mock框架
-
B.Spring提供了一个内部的Mock框架,所以不需要第三方的Mock框架,如 Mockito或 EasyMock
-
C.前两个答案是正确的
-
D.前两个答案都不正确
-
【正确答案】B
- 以下哪个说法最能说明使用 Spring Framework 在单元测试方面的好处?(选择一项)
-
A.你的 Java 代码通常在 Spring Framework 类上有依赖项,这些类的设计是为了使单元测试的工作更容易
-
B.Spring Framework 鼓励你按接口编程,这样可以更容易地在代码中存根或模拟出依赖项
-
C.Spring Framework 框架鼓励你尽可能地在一个测试中结合单元测试和集成测试
-
D.Application Context 在初始化时进行了大量的运行时检查,使得传统的单元测试变得不那么重要
-
【正确答案】B
- 默认情况下, Spring Boot 将自动在以下哪个地方查找属性文件?(选择一项)
-
A.与 Application 的主@Configuration 类名称相匹配的一个 properties 文件
-
B.application. properties 或 application.yml,通常位于根 classpath 中
-
C.config.properties 或 config.yml,通常位于根 classpath 中
-
D.Spring Boot 不会自动查找任何属性文件,除非特别指示(例如使用@PropertySource)
-
【正确答案】B
- 如果传播行为是 Propagation.REQUIRED,哪个说法最能描述传播行为:(选择一项)
-
A.如果存在活动事务,则在嵌套事务中执行;如果没有事务,则启动一个新的事务
-
B.如果已经存在事务,则在该事务中执行;如果没有事务,则在没有事务上下文的情况下执行
-
C.如果已经存在事务,则在该事务中执行;如果没有事务,则启动一个新的事务
-
D.如果已经存在事务,则在该事务中执行;如果没有活动事务,则抛出一个异常
-
【正确答案】C
- **考虑下图中的事务性服务层类。你使用的是 Spring 事务,它内部使用 Spring AOP 调用 update1 方法时,发生了什么事情? (选择一项) **
public class ClientServiceImpl implements ClientService{
@Transactional (propagation=Propagation.REQUIRED)
public void update1() { update2(); }
@Transactional(propagation=Propagation.REQUIRES_NEW)
public void update2(){ } }
-
A.只有一个事务,因为如果已经存在一个事务,REQUIRES_NEW 将使用一个活动事务
-
B.有 2 个事务,因为 REQUIRES_NEW 总是在一个新的事务中运行
-
C.只有一个事务,因为对 update2()的调用是内部的(不通过代理)
【正确答案】C
-
Spring 将每个 bean 实例放在一个作用域中。默认的作用域是什么?(选择一项)
-
A.request
-
B.session
-
C.prototype
-
D.singleton
-
【正确答案】D
- 考虑下面的代码示例。以下哪个说法是正确的?(选择一项)
public interface CustomerRepository extends CrudRepository {}
-
A.为了成功使用任何 Spring Data 实现(JPA、 MongoDB、 Gemfire 等), Customer 类上需要 JPA 注解
-
B.该类的实现可以由 Spring Data JPA 自动生成
-
C.实现 CustomerRepository 的类必须由开发者编码并声明为 Spring Bean
-
D.CustomerRepository 应该是一个类,而不是一个接口
【正确答案】B
- 考虑下面的 Java 配置类,声明的 bean 的 id/名称是什么?(选择一项)
@Configuration
public class AppConfig{
@Bean
public ClientService clientService(){ return new ClientServiceImpl(); }
}
A.clientServiceImpl(以小写"c"开头)
B.clientService(以小写"c"开头)
C.ClientServiceImpl(以大写"C"开头)
D.ClientService(以大写"C"开头)
【正确答案】B
-
当使用 Spring Boot 配置和运行 Web 应用程序时,你应包含哪个依赖项以在开发过程中更改代码时启用应用程序的自动重启?(选择一项)
-
A.spring-boot-starter-devtools
-
B.spring-boot-restart
-
C.spring-boot-devtools
-
D.spring-boot-initializr
-
【正确答案】C
- 关于 Spring 的 JUnit 4 或 JUnit 5 集成测试支持,以下哪个说法是正确的?(选择一项)
-
A.为每个测试方法初始化并创建一个新的 ApplicationContext
-
B.在一个应用程序中,你必须使用 JUnit 4 或 JUnit 5 进行所有的测试
-
C.你可以通过@ContextConfiguration 来说明测试类将使用哪些配置类
-
D.为了获取要测试的 Spring Bean 的引用,你需要在提供的 Application Context 上调用 getBean()
-
【正确答案】C
- 入门 POM 最恰当的描述是什么?(选择一项)
-
A.一个特定的 POM,你必须构建它来控制 Boot 的意见运行时
-
B.一种简单的方法,可以包含多个与特定技术相关的、协调的依赖项,如 web 或 JDBC
-
C.一种设置,用于指定你希望 Spring Boot 生成的代码
-
D.一个已有的模型项目,供你下载并作为项目的基础
-
【正确答案】B
- 关于 Spring 事务,以下哪些说法是正确的?(选择三项)
-
A.如果事务性方法抛出任何异常包括检查异常, Spring 将回滚事务
-
B.可以使用@EnableTransactionManagement 启用事务
-
C.可以把@Transactional 放在任何方法上,以表示它应该是事务性的
-
D.可以将@Transactional 放在任何接口上,以表示它的所有方法都应该是事务性的
-
【正确答案】B,C,D
这个题感觉有点问题,@Transactional 再加 private 方法上是无效的,但是这里 C 选项说的是“表示是事务性的”。感觉有点玩文字游戏。
- 关于 CommandLineRunner 和 ApplicationRunner,以下哪些说法是正确的?(选择两项)
-
A.你在 Spring Boot 应用程序中只能有一个 CommandLineRunner 或一个 ApplicationRunner
-
B.如果你需要 ApplicationArgumentsiString 而不是原始数组你应该实现 ApplicationRunner 而不是 CommandLineRunner
-
C.不能将依赖项 bean 注入 CommandLineRunner 或 ApplicationRunner 中
-
D.需要将 CommandLineRunner 或 ApplicationRunner 创建为一个 bean
-
【正确答案】B,D
CommandLineRunner
是一个接口,用来处理程序启动时传入的参数,比如java -jar demo.jar hello world
。
ApplicationRunner
是一个接口,用来处理程序启动时传入的参数,与CommandLineRunner
不同的是它的入参是被封装的参数类型ApplicationArguments
。
CommandLineRunner
和ApplicationRunner
都在 spring boot 程序启动过程中被调用。
- 在 Spring 中使用事务需要以下哪些内容?(选择两项)
-
A.将@EnableTransactionManagement 添加到一个 Java 配置类中
-
B.写一个 Spring AOP advice 来实现事务性行为
-
C.用@Transactional 注解来注解一个需要事务的接口、类或单个方法
-
D.用@Service 和@Transactional 注解来注解一个类
-
【正确答案】A,C
- 关于 Spring Boot Testing,以下哪些说法是正确的?(选择两项)
-
A.在 Spring Boot 应用程序中,每个测试类都必须用@SpringBootTest 来注解
-
B.你不能指定配置类作为@SpringBootTest 的属性
-
C.@SpringBootTest 通常用于集成测试
-
D.用@SpringBootTest 注解的测试代码没有任何配置类,在应用程序中只有一个用@SpringBootConfiguration 注解的类
-
【正确答案】C,D
C 选项,集成测试指的是将所有涉及的组件(类)放在一起一块进行测试,相当于我们平时用 postman 直接请求接口这样测试,@SpringBootTest 注解中是可以指定 webEnvironment 属性的。
D 选项的意思是用 @SpringBootTest 注解的类不需要再提供一个对
ApplicationContext
进行配置。框架会去自动寻找被 @ContextConfiguration , @Configuration , @SpringBootConfiguration 注解的配置类。
- 关于@SpringBootTest,以下哪些说法是正确的?(选择两项)
-
A.即使其他配置类被显式地指定,它也会搜索用@SpringBootConfiguration 注解的类
-
B.如果你使用 RANDOM_PORT、DEFINED_PORT 或 MOCK,服务器会被测试框架启动和停止
-
C.它自动配置了一个 TestRestTemplate bean
-
D.它支持不同的 webEnvironment 模式,如 RANDOM_PORT、DEFINED_PORT、MOCK 和 NONE
-
【正确答案】C,D
RANDOM_PORT、DEFINED_PORT 或 MOCK 不会去启动服务器,只会创建 web application context .
TestRestTemplate 是
spring-boot-test.jar
包中的类,为了方便进行测试。webEnvironment NONE 模式下,不会创建 web application context ,只会创建 application context.
-
Spring-boot-starter-test 提供了哪些依赖项?(选择三项)
-
A.Cucumber
-
B.spring-test
-
C.Hamcrest
-
D.JUnit
-
E.EasyMock
-
【正确答案】B,C,D
-
JdbcTemplate 可以用来查询哪些类型的对象?(选择三项)
-
A.Domain Objects
-
B.简单类型(int、long、 String 等)
-
C.JSONObject
-
D.Generic Maps
-
【正确答案】A,B,D
- 如何访问 application. properties 或 application.yml 文件中定义的属性?(选择两项)
-
A.通过调用 ApplicationContext 对象的 getProperty(...)方法
-
B.通过自动创建的 Properties 对象
-
C.通过 Spring Environment 对象
-
D.通过一个@Value 注解的构造函数参数
-
【正确答案】C,D
- JdbcTemplate 执行哪些操作:(选择三项)
A.获得连接
B.执行语句
C.定义数据源
D.生成 SQL 语句
E.解除连接
【正确答案】A,B,E
Spring handle : Acquisition of the connection; participation in the transaction; execution of the statement; processing of the result set; handling exceptions; release of the connection.
- 关于@WebMvcTest,以下哪些说法是正确的?(选择两项)
-
A.当有一个依赖项 bean 要被模拟时,它通常会与@MockBean 结合使用
-
B.它通常与 JUnit4 中的@RunWith(MockitoJUnitRunner.class)或 JUnit5 中的@ExtendWith(MockitoExtension. class)一起使用
-
C.它自动配置了一个 MockMvc bean
-
D.它用于在运行中的服务器上测试 Spring MVC 组件,如@Controller
-
【正确答案】A,C
- 以下哪些说法是 Spring Transaction Management 的特点?(选择三项)
-
A.它简化了向分布式事务的迁移
-
B.从本地事务切换到分布式事务,只需更改 Spring 配置就可以了
-
C.它提取了本地事务和分布式事务的区别
-
D.在本地事务和分布式事务的代码中事务失败的处理方式需要有所不同
-
【正确答案】A,B,C
- 关于 Spring Boot 自动配置的自定义,以下哪些说法是正确的?(选择两项)*
-
A.你可以通过将自动配置类子类化,明确地禁用一些自动配置
-
B.你可以通过在 application. properties 文件中设置一个属性或使用@EnableAutoConfiguration 注解上的 exclude 属性来明确地禁用一些自动配置
-
C.如果某些自动配置不适合你的需要,你可以明确地禁用它
-
D.你只能禁用所有的自动配置。即,你不能只禁用部分自动配置
-
【正确答案】B,C
在 application. properties 配置文件中禁用自动配置
- 当在一个类上使用@SpringBootApplication 时,以下哪些说法是正确的?(选择两项)
-
A.它使 Spring Boot 启用自动配置
-
B.由于该类不是一个@Configuration 类,所以在该类中不能有@Bean 方法
-
C.它使 Spring 从该类的包开始执行组件扫描
-
D.它使 Spring Boot 构建一个可执行的 JAR 应用程序
-
【正确答案】A,C
- 下图显示了一个创建 JdbcTemplate bean 的条件式@Bean 方法以下哪些说法正确地描述了下面的代码?(选择两项)
@Bean
@ConditionalOnBean(name = "dataSource")
public JdbcTemplate jdbcTemplate(DataSource dataSource){ return new JdbcTemplate(dataSource); }
-
A.该代码存在语法错误
-
B.当已经创建了一个名为"dataSource"的 bean 时,将创一个 JdbcTemplate bean
-
C.应将@ConditionalOnBean(name = "dataSource")替换为@ConditionalOnBean(DataSource.class).以提高灵活性
-
D.当 DataSource 类在 classpath 中,但不存在 DataSource bean 时,将创建一个 JdbcTemplate bean
【正确答案】B,C
- 以下哪些是@Transactional 注解的有效可选属性?(选择两项)
-
A.writeOnly
-
B.nestedTransaction
-
C.isolation
-
D.propagation
-
【正确答案】C,D
- 关于 Spring 的 JPA 支持,以下哪些说法是正确的?(选择两项)
-
A.Spring 可以使用@Transactional 注解将多个 JPA persistence 操作协调到一个事务中
-
B.在使用 JPA 时,Spring 需要一个 persistence.xml 配置文件,因为 JPA 规范中要求这个文件
-
C.Spring 允许将 EntityManagerFactory 配置为 Spring Bean
-
D.Spring 提供了自己的 JPA 实现
-
【正确答案】A,C
- 关于基于 Spring Boot 的 Web 应用程序的"fat"jar,以下哪些说法是正确的?(选择两项)
-
A."fat"jar 必须是 JAR 文件,不能是 WAR 文件
-
B."fat"jar 可以包含多个嵌入式服务器
-
C."fat"jar 会被 Spring Boot Maven 插件或 Gradle 插件构建起来
-
D."fat"jar 可以在容器和云平台上轻松部署
-
【正确答案】C,D
- 以下哪些说法描述了 Spring 的 JdbcTemplate?(选择两项)
-
A.JdbcTemplate 提供了处理结果集的能力
-
B.所有的 JdbcTemplate 方法都会抛出你需要处理的 SQLExceptions
-
C.JdbcTemplate 提供了查询执行的方法
-
D.JdbcTemplate 为你生成 SQL 语句
-
【正确答案】A,C
- 假设一个 Spring Boot应用程序只有两个依赖项,如下所示。 关于DataSource和JdbcTemplate和beans的自动配置,以下哪些说法是正确的?(选择两项)
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependencies>
-
A.将使用嵌入式数据库自动创建一个DataSource bean
-
B.如果classpath根目录下有data.sql和schema.sql文件,将自动创建DataSource bean
-
C.不会自动创建JdbcTemplate bean
-
D.如果你明确配置了自己的DataSource bean,则会自动创建一个JdbcTemplate bean
【正确答案】C,D
- 关于 TestRestTemplate,以下哪些说法是正确的?(选择两项)
-
A.当使用 TestRestTemplate 的 getForObject(..)方法时,你需要提供完整的路径(就像你在 RestTemplate 中做的那样),而不是作为第一个参数的相对路径
-
B.它可以方便地替代 RestTemplate 进行集成测试
-
C.它是 RestTemplate 类的一个子类
-
D.当使用@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)时,预先配置的 TestRestTemplate 知道向哪个端口发送请求
-
【正确答案】B,D
TestRestTemplate
不是RestTemplate
的子类,它内部含有一个RestTemplate
实例。
- 关于@DataJpaTest,以下哪些说法是真的?(选择两项)
-
A.它既可以用来测试JPA组件,也可以用来测试NoSQL组件
-
B.它使用一个内存数据库作为默认的数据源
-
C.它自动配置了一个TestEntityManager bean
-
D.TestEntityManager提供了Entity Manager所提供的所有方法,还有更多的方法
-
【正确答案】B,C
- 当多个 bean 与依赖项的类型相匹配时,以下是可能的自动布线机制。其中哪个是正确的?(选择两项)
-
A.只在 setter 方法中使用@Qualifier 注解(@Autowired 对于 setter 是可选的)
-
B.使用@Qualifier 和@Autowired 注解以及 setter 方法
-
C.在字段上同时使用@Qualifier 和@Autowired 注解
-
D.只在字段上使用@Qualifier 注解(@Autowired 对字段是可选的)
-
【正确答案】B,C
- 关于 Spring Boot,以下哪些说法是正确的?(选择两项)
-
A.Spring Boot 会生成你的应用程序所需的所有应用程序级别的配置文件
-
B.Spring Boot 允许不同的打包选项,例如将 Tomcat 打包为应用程序 JAR 文件中的嵌入式容器
-
C.Spring Boot 是一个苛刻的运行时,它要求遵守规定的方法,不能有任何偏差
-
D.Spring Boot 试图让开发者摆脱最可预测的低级设置
-
【正确答案】B,D
- 以下关于@Autowired 注解的哪些说法是正确的?(选择两项)
-
A.可以使用 Autowired 将多个参数注入到一个方法中
-
B.默认情况下,如果一个依赖项不能用@Autowired 来满足, Spring 会抛出一个 RuntimeException
-
C.它不能用来注解字段,只能用来注解构造函数和方法
-
D.如果在一个类上使用了@Autowired,则会自动对所有的依赖项进行字段注入
-
【正确答案】A,B
- 关于 application.properties或application.yml文件,以下哪些说法是正确的?(选择两项)
-
A.你只能用它定义 Spring Boot 属性,你必须将你的属性放在不同的文件中
-
B.如果它们位于当前目录的"/config"子目录下, Spring Boot 会找到它们
-
C.即使在环境中或使用命令行参数定义属性,application. properties 或 application.yml 中的属性总是覆盖其他的属性
-
D.在特别的属性文件中定义的属性,如 application-production.properties 或 application-production.yml,将覆盖在application. properties 或 application.yml 文件中定义的属性
-
【正确答案】B,D
- 关于 Spring 和 Spring Boot Testing,以下哪些说法是正确的?(选择两项)
-
A.spring-boot-starter-test 依赖项提供了@Mock 和@MockBean 等注解
-
B.你可以使用@SpringBootTest 或@ContextConfiguration 来创建 Spring 应用上下文
-
C.它同时支持集成测试和分片单元测试
-
D.它支持即用的 EasyMock
-
【正确答案】B,C
@Mock 注解是
mockito
库中的,spring-boot-stater-test 中依赖了mockito
没有依赖EasyMock
.
Spring Boot Testing Framework provides a set of annotations and utilities for testing: @SpringBootTest, @WebMvcTest, @WebFluxTest, @DataJpaTest, @DataJdbcTest, @JdbcTest, @DataMongoTest, @DataRedisTest, @MockBean. --- Integration Testing with @SpringBootTest : Automatically searches for @SpringBootConfiguration, it is an alternative to @ContextConfiguration for creating application for testing, Use @SpringBootTest for integration testing and use @ContextConfiguration for slice
- 以下哪些会影响 Spring Boot 的自动配置?(选择三项)
-
A.classpath 的内容
-
B.特定 bean 的预先存在
-
C.你的应用程序的包结构
-
D.在 application.properties 或 application.yml 文件中设置的特定外部属性,如 spring.datasource.*属性等
-
E.无论你的应用是否是一个多模块对象
-
【正确答案】A,B,D
Spring Boot 会在 classpath 下寻找
META-INF/spring.factories
配置文件包含了自动配置相关配置项。@ConditionalOnBean
,@ConditionalOnProperty
用来控制自动配置 。
- 关于@EnableAutoConfiguration 注解,以下哪些说法是正确的?(选择两项)
-
A.如果没有 application. properties 或 application.yml 文件,就不能使用它
-
B.它是由@SpringBootConfiguration 合成的注解的元注解
-
C.它是由@SpringBootApplication 合成的注解的元注解
-
D.它使 Spring Boot 自动创建它认为应用程序需要的 bean
-
【正确答案】C,D
这个题答案部分感觉翻译的有问题。
- 以下哪些说法描述了 JdbcTemplate 的特性?(选择两项)
-
A.它提供了一种处理结果集的回调方法
-
B.开发者仍然负责从/到连接池获取和释放一个连接
-
C.它可以抛出 checked exceptions
-
D.它将根原因 checked exceptions 翻译成 Spring 的 DataAccessException 类型
-
【正确答案】A,D
- 以下哪些注解是由@Spring Boot Application 组成的注解的元注解?(选择两项)
-
A.@SpringBootConfiguration
-
B.@Autowired
-
C.@SpringApplication
-
D.@ComponentScan
-
【正确答案】A,D
- 哪些说法表明使用 Spring 的依赖注入的潜在优势:(选择三项)
-
A.应用组件之间的依赖项可以在组件本身的外部进行管理
-
B.配置可以外部化并集中在一小组文件中
-
C.测试变得更容易,因为在单元测试时,可以很容易地将 mock dependency 对象注入到依赖对象中
-
D.依赖注入帮助 IDE 生成一些代码
-
E.依赖注入可以减少应用程序的启动时间
-
【正确答案】A,B,C
- 考虑下图中的类。以下哪些 Repository 方法可以由 Spring Data JPA 自动实现?(选择两项)
@Entity
public class Customer {
@Id
private Long id;
private String name;
private Date orderDate;
private String email;
}
A.public Customer getSingle(Long id);
B.public Customer findFirstByOrderDateBetween(Date d1, Date d2);
C.public Customer findFirstOrderDateMax();
D.public Customer findByEmail(String email);
【正确答案】B,D
JPA Repository : Auto-generated finders obey naming convention : find(First)By, can be GreaterThan / NotEquals / Between / Like
- 关于 Spring Boot 自动配置,以下哪些说法是正确的?(选择两项)
-
A.当缺少 bean 时,可能会发生自动配置。但当存在 bean 时,不会发生自动配置
-
B.自动配置是通过处理 Spring Boot 提供的自动配置类列表来执行的,每个自动配置类都使用不同的条件集
-
C.只有在应用级配置完成后,才会出现自动配置的情况
-
D.自动配置发生在应用级配置之前和之后
-
【正确答案】B,C
Auto-configuration classes processed after explicitly created beans are defined.
- 关于 Spring Data,以下哪些说法是正确的?(选择两项)
-
A.Spring Data 将 JPA 编程模型和 JPA 注解应用于 MongoDB、Neo4j 和 Redis 等非关系型数据存储中
-
B.Spring Data 是专门为 JPA 和关系型数据库访问而设计的
-
C.许多数据存储类型都有 Spring Data 实现,如 MongoDB、Neo4j 和 Redis
-
D.Spring Data 可以极大地减少数据访问所需的"boilerplate"(样板)代码量
-
【正确答案】C,D
关于 Spring Certified Professional
考试题目本篇只整理了一部分,后续会继续整理更多的题目。
DevX
会持续有趣的技术和见闻,如果你觉得本文对你有帮助希望你可以分享给更多的朋友看到。该文章会同步在微信公众号 【DevXJava】, 方便在微信客户端阅读。之后可能会制作一些视频讲解 spring 的源码,不过这都取决于忙不忙有没有更多空闲的时间,简单来说就是随缘的心态 : ) Hahaha . 昨天我路过 KFC 想去买个圣代吃,走进去我犹豫了几秒又忍住了,自言自语说哎别他妈吃了,好像人越胖就越喜欢吃甜的东西,话说有谁不爱吃甜甜的东西呢。