第二次测试

1以下哪项是对@PropertySource 注解的最佳解释?(选择一项)B

A.用于方便地从某个外部属性文件中查找并返回单个属性值

B.用于从某个外部来源向 Spring Environment 添加一组额外的 name/value 对

C.用于指定 Spring Boot 应用程序中 application. properties 文件的位置

D.Spring 框架中没有这样的注解

application. properties不需要指定,会默认读取

@PropertySource是用于从某个外部来源向 Spring Environment 添加一组额外的 name/value 对 

从外部引入其他的配置文件,读取到某个信息(<k,v>)之中之后加入到Spring Environment中,读取进去之后可以使用@value获取

2.已给出下面的 pointcut,下列哪些关于 Spring AOP 的说法是正确的?(选择一项) execution(@com.mycomp.MyCustomAnnotation void *(..)) B

  1. Spring 不支持其 pointcut 表达式语言内部的注解
  2. 这将选择代表被@com.mycomp.MyCustomAnnotation 注解的 void 方法的 join point
  3. 这将选择代表只位于根包中的类的方法的 join point
  4. 这个 pointcut 将永远无法选择任何 join point

A.说法 2 和 3 是正确的

B.说法 2 是正确的

C.都是错误的

D.说法 4 是正确的

E.说法 1 是正确的

选B:AOP支持使用注解作为载入点,在需要使用AOP的类或方法上使用创建的注解,会将创建的注解的标记的位置作为一个载入点

说法1:About Pointcuts: Spring AOP uses AspectJ’s pointcut expression language, Spring AOP supports a practical subset.说法3:在execution表达式中,如果是 *(..) 格式,可以通配所有包(含各级子包),如果指定了包名,仅用于选择指定的包,并不包含子包,如果指定包名且需要通配子级包,需要在包名处使用 .. 进行通配。

3.以下哪个说法最能说明"After Returning" advice 类型?(选择一项)

A.通常用于防止任何由 advice 方法抛出的异常在调用栈中传播

B."After Returning" advice 允许在方法返回后添加行为,即使它抛出了一个异常

C.该 advice 对方法的调用具有完全的控制权,它甚至可以完全阻止方法的调用

D.该 advice 只有在方法成功返回时才会被调用,如果该方法抛出异常则不会被调用

 选D

A:该 Advice 并不针对异常有特殊的处理; B:该 Advice 仅当方法返回了某个值之后才会执行,如果抛出异常,必然没有返回值; C:不在方法之前执行的 Advice 显然无法阻止方法的调用.

4.入门 POM 最恰当的描述是什么?(选择一项)

A.一个特定的 POM,你必须构建它来控制 Boot 的意见运行时

B.一种简单的方法,可以包含多个与特定技术相关的、协调的依赖项,如 web 或 JDBC

C.一种设置,用于指定你希望 Spring Boot 生成的代码

D.一个已有的模型项目,供你下载并作为项目的基础

选B

5. Spring 将每个 bean 实例放在一个作用域中。默认的作用域是什么?(选择一项)

A.request

B.session

C.prototype

D.singleton

D:默认作用域为singleton

6.在ApplicationContext中定义使用singleton作用域的两个MyBean类型的bean,id为"myBean"1和"myBean2"。getBean(String id)方法对每个bean被调用一次。关于返回的两个引用,哪个说法是正确的?(选择一项)A

A.两个引用指向同一类型的不同实例

B.两个引用指向同一个bean实例

C.当ApplicationContext被初始化时,将抛出RuntimeException

D.其中一个引用将是null

选A:同一类型的不同名字的不同实例的bean不会冲突

7.(new)哪个说法最能描述 Spring MVC 中的 REST 特性?(选择一项)B

A.Spring MVC 的 REST 功能不依赖于 JAX-RS 标准

B.Spring MVC 提供其 JAX-RS 实现

C.Spring MVC 的 REST 功能可以依赖任何 JAX-RS 实现

选C

8.(new)以下关于在 JUnit 集成测试中使用@Transactional 注解的说法中,哪项不是正确的的?(选择一项)

A.只有当 test 类或 test 方法被注解为@Commit(false)时,事务才会在测试后回滚出来

B.默认情况下,每次测试后,事务将自动回滚

C.用@Transactional 来注解 test 类,会使其所有的 test 方法在事务中运行

D.用@Transactional 来注解 test 方法,会使 test 方法在事务中运行

选A  

 9.考虑下面的方法签名。

@PutMapping("/accounts/{id}") public void update(...) {...}

以下哪种方法是检索账户 id 的有效方法?(选择一项)D

A.public void update(@PathVariable long accountId)

B.public void update(@RequestParam("id") String accountId)

C.public void update(@RequestParam long accountId)

D.public void update(@PathVariable("id") String accountId)

选D put请求,且参数为“id”

10.(new)关于 Spring和单元测试,以下哪个说法是正确的?(选择一项)

A.Spring提取了现有的Mock框架

B.Spring提供了一个内部的Mock框架,所以不需要第三方的Mock框架,如 Mockito或 EasyMock

C.前两个答案是正确的

D.前两个答案都不正确

选B

11.关于 Spring 的 JUnit 4 或 JUnit 5 集成测试支持,以下哪个说法是正确的?(选择一项)

A.为每个测试方法初始化并创建一个新的 ApplicationContext

B.在一个应用程序中,你必须使用 JUnit 4 或 JUnit 5 进行所有的测试

C.你可以通过@ContextConfiguration 来说明测试类将使用哪些配置类

D.为了获取要测试的 Spring Bean 的引用,你需要在提供的 Application Context 上调用 getBean()

选C

A大多数Spring Bean是无状态/不可变的单例,在任何测试中都不会被修改。不需要为每个测试建立新的上下文。

B 不一定要使用 JUnit 4 或 JUnit 5

C @ContextConfiguration(classes={SystemTestConfig.class})指向系统测试配置文件

@SpringJUnitConfig是一个“合成”注解,它整合了  

  • 来自JUnit 5的@ExtendWith(SpringExtension.class)
  •  来自Spring的@ContextConfiguration

D 可以使用注入的方法获取bean,这种方法是错误的

12.(new)以下哪个说法最能说明使用 Spring Framework 在单元测试方面的好处?(选择一项)

A.你的 Java 代码通常在 Spring Framework 类上有依赖项,这些类的设计是为了使单元测试的工作更容易

B.Spring Framework 鼓励你按接口编程,这样可以更容易地在代码中存根或模拟出依赖项

C.Spring Framework 框架鼓励你尽可能地在一个测试中结合单元测试和集成测试

D.Application Context 在初始化时进行了大量的运行时检查,使得传统的单元测试变得不那么重要

选B

Spring 团队发现正确使用控制反转 (IoC) 确实使单元和集成测试更容易(因为 setter 方法和类上适当的构造函数的存在使它们更容易在测试中连接在一起,而不必设置服务定位器注册表和类似结构)。

13.根据 REST 原则,更新编号为 1234 的 Order 的最佳方式是什么?(选择一项)A

A.向/orders/1234 发送 PUT 请求

B.向/orders/1234 发送 POST 请求

C.向/order/edit?id=1234 发送一个 POST 请求

D.向/order/edit?id=1234 发送 PUT 请求

选A rest排除cd,更新选择put请求

14.(new)考虑下面的代码示例。以下哪个说法是正确的?(选择一项) public interface CustomerRepository extends CrudRepository {}

A.为了成功使用任何 Spring Data 实现(JPA、 MongoDB、 Gemfire 等), Customer 类上需要 JPA 注解

B.该类的实现可以由 Spring Data JPA 自动生成

C.实现 CustomerRepository 的类必须由开发者编码并声明为 Spring Bean

D.CustomerRepository 应该是一个类,而不是一个接口

选B

15.(new)默认情况下, Spring Boot 将自动在以下哪个地方查找属性文件?(选择一项)

A.与 Application 的主@Configuration 类名称相匹配的一个 properties 文件

B.application. properties 或 application.yml,通常位于根 classpath 中

C.config.properties 或 config.yml,通常位于根 classpath 中

D.Spring Boot 不会自动查找任何属性文件,除非特别指示(例如使用@PropertySource)

选B

16.(new)Spring RestTemplate 类:(选择一项)

A. 可以用来发送和接收使用Spring的RequestEntity的和ResponseEntity定义的数据

B.不能在服务端应用中使用

C.在使用前需要为其明确定义 HttpMessageConverters

D.只能用于与使用 Spring MVC 实现的服务器进行对话

选A

17.考虑以下来自 @Configuration 类的代码,并应用 Spring 的默认行为,选择正确答案(选择一项)

@Configuration public class MyConfig { 
    @Bean public AccountRepository accountRepository(){ 
        return new JdbcAccountRepository(); 
    } 
    @Bean public TransferService transferService(){ 
        TransferServiceImpl service = new TransferServiceImpl();                 
        service.setAccountRepository(accountRepository()); 
        return service; 
    } 
    @Bean public AccountService accountService(){ 
        return new AccountServiceImpl(accountRepository()); 
    } 
}

A.两个 AccountRepository bean 将被实例化,因为 accountRepository()方法将被调用两次

B.三个 AccountRepository bean 将被实例化,因为 accountRepository()方法将被调用三次

C.一个 AccountRepository bean 将被实例化,因为默认的作用域是 Singleton

D.许多 AccountRepository bean 将被实例化取决于调用 accountRepository(),transferService()和 accountService()的频率

选C:Spring IoC 的底层是基于代理模式的,即带@Bean 注解的方法是被 Spring 代理的,不会反复创建对象。

18.考虑下图中的事务性服务层类。你使用的是 Spring 事务,它内部使用 Spring AOP 调用 update1 方法时,发生了什么事情? (选择一项) C

public class ClientServiceImpl implements ClientService{
    @Transactional (propagation=Propagation.REQUIRED)
    public void update1(){
        //this.update2();       
        update2();
    }
    @Transactional(propagation=Propagation.REQUIRES_NEW)
    public void update2(){
    }
}

A.只有一个事务,因为如果已经存在一个事务,REQUIRES_NEW 将使用一个活动事务

B.有 2 个事务,因为 REQUIRES_NEW 总是在一个新的事务中运行

C.只有一个事务,因为对 update2()的调用是内部的(不通过代理)

C 因为是内部类加载,不会创建代理,执行事务,

解决方法:可以通过注入自己,注入 其他类,通过AopContent

Spring 管理事务是基于接口代理的,如果是内部调用,则不重新经过代理对象,则无事务的特性,即在“内部调用” 时,被调用的方法上的@Transactional 是无效的,注解参数更加没有任何意义。

19.你希望应用一个 aspect 来阻止异常在堆栈中传播,并返回一个错误值。你会使用哪种类型的 advice?(选择一项) D

A."After Returning"

B."After Throwing"

C."After"

D."Around"

E."Before"

D:只有Around可以阻止异常传播

20.(new)当使用 Spring Boot 配置和运行 Web 应用程序时,你应包含哪个依赖项以在开发过程中更改代码时启用应用程序的自动重启?(选择一项)

A.spring-boot-starter-devtools

B.spring-boot-restart

C.spring-boot-devtools

D.spring-boot-initializr

选C

    <!--   热部署  -->
        <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-devtools</artifactId>
         <optional>true</optional>
         <!-- 表示依赖不会传递,之后依赖该module的项目如需继续使用,则需要再次引入 -->
     </dependency>

21.Spring 应用程序可以使用以下哪种技术来定义 environment-specific 属性源?(选择两项)

A.environment-specific 属性源是一种反面模式, Spring 不支持这种属性源 

B.在提供给属性源的字符串中使用一个占位符,例如: @PropertySource("classpath:/com/acme/config/app- ${ENV}.properties“) 

C.使用@PropertySource 注解中的"env"属性来指定要加载的文件,例如 @PropertySource(env="dev",value="classpath:/com/acme/config/app-${env}.properties") 

D.使用@PropertySource 来注解一个用@Profile 注解的@Configuration 类 

【正确答案】B,D

【答案解析】@PropertySource没有env这个属性,A不支持怎么使用?排除法选BD

 

22.(new)关于@SpringBootTest,以下哪些说法是正确的?(选择两项)

A.即使其他配置类被显式地指定,它也会搜索用@SpringBootConfiguration 注解的类

B.如果你使用 RANDOM_PORT、DEFINED_PORT 或 MOCK,服务器会被测试框架启动和停止

C.它自动配置了一个 TestRestTemplate bean

D.它支持不同的 webEnvironment 模式,如 RANDOM_PORT、DEFINED_PORT、MOCK 和 NONE

【正确答案】C,D

【答案解析】

23.关于 Spring MVC,以下哪些说法是正确的?(选择三项)

A.Controllers 通常可以委托给 service bean 的 business 方法,因为 service bean 可以注入到 Controller 中去了

B.用@Controller 注解的类可以通过组件扫描检测到,并以 Spring bean 的形式加载

C.数据可以通过使用特殊的 Model 参数从 Controller 传递到 View 中

D.你不能在 Controller 类上使用构造函数注入

E.Controllers 必须注入@Service bean 或@Repository bean

选ABC

        D错误,在Controllers层中注入service层

        E,可以不注入,执行自己的方法

24.(new)关于@WebMvcTest,以下哪些说法是正确的?(选择两项)

A.当有一个依赖项 bean 要被模拟时,它通常会与@MockBean 结合使用

B.它通常与 JUnit4 中的@RunWith(MockitoJUnitRunner.class)或 JUnit5 中的@ExtendWith(MockitoExtension. class)一起使用

C.它自动配置了一个 MockMvc bean

D.它用于在运行中的服务器上测试 Spring MVC 组件,如@Controller

选AC

25.关于@EnableAutoConfiguration 注解,以下哪些说法是正确的?(选择两项)

A.如果没有 application. properties 或 application.yml 文件,就不能使用它 

B.它是由@SpringBootConfiguration 合成的注解的元注解 

C.它是由@SpringBootApplication 合成的注解的元注解 

D.它使 Spring Boot 自动创建它认为应用程序需要的 bean 

【正确答案】C,D

【答案解析】广泛的预写bean配置,自动扫描创建bean对象,是@SpringBootApplication 的组成部分之一

Spring boot启动项的解析_sayhitoloverOvO的博客-CSDN博客

26.(new)关于下面的 pointcut 表达式,下列哪些说法是正确的:(选择两项)execution(@javax.annotation.security.RolesAllowed * rewards.restaurant.*.*(..))

A.类名可以被任意命名

B.目标方法可以有零个或多个参数

C.所有的方法参数都应该用@RolesAllowed 来注解

D.目标方法的返回类型是 RolesAllowed

【正确答案】A,B

【答案解析】..表示没有或多个参数

AOP支持使用注解作为载入点,在需要使用AOP的类或方法上使用创建的注解,会将创建的注解的标记的位置作为一个载入点

27.(new)关于创建 bean,以下哪些说法是正确的?(选择两项)

A.通过@Autowired 注解方法或字段,显式创建 Spring Bean

B.通过@Bean 注解类,并使用组件扫描器扫描它的包,隐式创建 Spring bean

C.使用@Component 注解类,并使用组件扫描器扫描它的包,隐式创建 Spring bean

D.在 Spring 配置文件中使用@Bean 注解方法,显式创建 Spring bean

【正确答案】C,D

【答案解析】@Bean 不能注解类,通过@Autowired 注解只有注入,没有创建功能

28.(new)关于@DataJpaTest,以下哪些说法是真的?(选择两项)

A.它既可以用来测试JPA组件,也可以用来测试NoSQL组件

B.它使用一个内存数据库作为默认的数据源

C.它自动配置了一个TestEntityManager bean

D.TestEntityManager提供了Entity Manager所提供的所有方法,还有更多的方法

【正确答案】B,C

【答案解析】

29.(new)关于 RestTemplate,以下哪些说法是正确的?(选择两项)

A.它自动支持发送和接收 java 对象

B.无法通过 RestTemplate 用自定义数据头发送 HTTP 请求

C.它提供了编写 REST 服务的方便方法

D.它提供了编写 REST 客户端的方便方法

【正确答案】A,D

【答案解析】它自动支持发送和接收 java 对象,它提供了编写 REST 客户端而不是服务的的方便方法

30.JdbcTemplate 可以用来查询哪些类型的对象?(选择三项)

A.Domain Objects 

B.简单类型(int、long、 String 等) 

C.JSONObject 

D.Generic Maps 

【正确答案】A,B,D

【答案解析】

 31下图显示了一个创建 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

【答案解析】A排除,

32.以下哪些关于 BeanFactoryPostProcessors 的说法是正确的?(选择两项)

A.检测@PostConstruct 和@PreDestroy 注解,然后调用适当的行为

B.允许在实例化 Spring bean 之前转换 bean 定义

C.允许在实例化 Spring bean 后转换 bean

D.PropertySourcesPlaceholderConfigurer 是 BeanFactoryPostProcessor 接口的实现,用于读取 Spring Environment 中的属性值

【正确答案】B,D

【答案解析】

33关于 Spring Boot 自动配置,以下哪些说法是正确的?(选择两项)

A.当缺少 bean 时,可能会发生自动配置。但当存在 bean 时,不会发生自动配置

B.自动配置是通过处理 Spring Boot 提供的自动配置类列表来执行的,每个自动配置类都使用不同的条件集

C.只有在应用级配置完成后,才会出现自动配置的情况

D.自动配置发生在应用级配置之前和之后

BC:

A:当缺少 bean 时,一定会发生自动配置。但当存在 bean 时,不会发生自动配置

B:通过pom导入的jar包进行自动配置

C,D:自动装配一定在应用级装配之后,如果该Bean被创建了,那么不会再自动创建。

定义显式创建的bean之后处理的自动配置类。

34以下哪些说法描述了 Spring 的 JdbcTemplate?(选择两项)

A.JdbcTemplate 提供了处理结果集的能力

B.所有的 JdbcTemplate 方法都会抛出你需要处理的 SQLExceptions

C.JdbcTemplate 提供了查询执行的方法

D.JdbcTemplate 为你生成 SQL 语句

【正确答案】A,C

【答案解析】

35.哪些说法表明使用 Spring 的依赖注入的潜在优势:(选择三项)

A.应用组件之间的依赖项可以在组件本身的外部进行管理 

B.配置可以外部化并集中在一小组文件中 

C.测试变得更容易,因为在单元测试时,可以很容易地将 mock dependency 对象注入到依赖对象中 

D.依赖注入帮助 IDE 生成一些代码 

E.依赖注入可以减少应用程序的启动时间 

【正确答案】A,B,C

【答案解析】D:Spring 并不能作用于 IDE; E:应用程序的启动时间与依赖注入机制没有关系,一定程度上来说,由于 Spring 默认以饿汉式管理 Bean,由于有了依赖 注入,启动时间反而更久一些

36.图片显示的是一个 Java 配置类。哪些说法是正确的?(选择两项) @Configuration public class AppConfig { @Bean public ClientService clientService() { ClientServiceImpl clientService = new ClientServiceImpl(); clientService.addClientDao(new ClientDao()); return clientService; }

A.该 bean 不能使用以"add"开头的方法来注入依赖项

B.这个 Java 配置可以通过使用@Profile 注解来指定配置文件

C.该 bean 的类型为 ClientService

D.声明的 bean 默认是一个 prototype

BC

37.以下哪些说法描述了 JdbcTemplate 的特性?(选择两项)

A.它提供了一种处理结果集的回调方法 

B.开发者仍然负责从/到连接池获取和释放一个连接 

C.它可以抛出 checked exceptions 

D.它将根原因 checked exceptions 翻译成 Spring 的 DataAccessException 类型 

【正确答案】A,D

【答案解析】可以处理结果集,将sql异常以运行时异常的DataAccessException形式输出

 

 

38.以下哪些说法是 Spring Transaction Management 的特点?(选择三项)

A.它简化了向分布式事务的迁移

B.从本地事务切换到分布式事务,只需更改 Spring 配置就可以了

C.它提取了本地事务和分布式事务的区别

D.在本地事务和分布式事务的代码中事务失败的处理方式需要有所不同

选ABC

 39.JdbcTemplate 执行哪些操作:(选择三项) ABE

A.获得连接

B.执行语句

C定义数据源

D.生成 SQL 语句

E.解除连接

选ABE

40.关于 advice 类型和异常处理,以下哪些说法是正确的?(选择两项)

A."After Returning" advice 类型可以吞没或阻止目标方法抛出的异常的传播 

B.如果"Before" advice 方法抛出异常,则不会调用目标方法 

C."Around"advice 类型可以吞没或阻止目标方法抛出的异常的传播 

【正确答案】B,C

【答题时间】2021-10-10 04:33:00

【答案解析】A:After Returning -- 先执行目标方法,当成功返回某个值后才会触发,不能阻止异常传播; B:Before -- 在目标方法之前触发,和方法运行状态无关; C:Around -- 在目标方法之前触发,且在触发后自行调用目标方法,则调用时可处理异常。

41.假设一个 Spring Boot应用程序只有两个依赖项,如下所示。 <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> 关于DataSource和JdbcTemplate和beans的自动配置,以下哪些说法是正确的?(选择两项)

A.将使用嵌入式数据库自动创建一个DataSource bean

B.如果classpath根目录下有data.sql和schema.sql文件,将自动创建DataSource bean

C.不会自动创建JdbcTemplate bean

D.如果你明确配置了自己的DataSource bean,则会自动创建一个JdbcTemplate bean

CD

A没有嵌入数据库

Bsql脚本和自动配置没有关系

42.当在一个类上使用@SpringBootApplication 时,以下哪些说法是正确的?(选择两项)

A.它使 Spring Boot 启用自动配置 

B.由于该类不是一个@Configuration 类,所以在该类中不能有@Bean 方法 

C.它使 Spring 从该类的包开始执行组件扫描 

D.它使 Spring Boot 构建一个可执行的 JAR 应用程序 

【正确答案】A,C

【答案解析】

B:@SpringBootApplication内置了@Configuration

D:@SpringBootApplication只是启动项,无法执行打包任务

 

43.以下哪种描述ApplicationContext对象的说法是正确的?(选择两项)

A.ApplicationContext对象可以在单元测试、Web应用和独立应用中创建

B.集成测试中不能创建ApplicationContext对象

C.ApplicationContext对象保持着Spring运行时实例化的所有bean

D.不能通过ApplicationContext对象访问Bean

【正确答案】A,C

44.以下哪项注入了"daily.limit"系统属性的值?(选择两项)

A.@Value("#{systemProperties.daily.limit}") 

B.@value("${daily.limit}") 

C.@value("#{daily. limit}") 

D.@Value("#{systemProperties['daily.limit']}") 

【正确答案】B,D

【答案解析】

45.关于@EnableAutoConfiguration 注解,以下哪些说法是正确的?(选择两项)

A.如果没有 application. properties 或 application.yml 文件,就不能使用它 

B.它是由@SpringBootConfiguration 合成的注解的元注解 

C.它是由@SpringBootApplication 合成的注解的元注解 

D.它使 Spring Boot 自动创建它认为应用程序需要的 bean 

【正确答案】C,D

【答案解析】Spring boot启动项的解析_sayhitoloverOvO的博客-CSDN博客

 

46.Spring-boot-starter-test 提供了哪些依赖项?(选择三项)

A.Cucumber 

B.spring-test 

C.Hamcrest 

D.JUnit 

E.EasyMock 

【正确答案】B,C,D

【答案解析】B,springtest的依赖 C,Hamcrest 匹配器 D,JUnit测试依赖(固定设置)

 

47.以下哪些会影响 Spring Boot 的自动配置?(选择三项)

A.classpath 的内容

B.特定 bean 的预先存在

C.你的应用程序的包结构

D.在 application.properties 或 application.yml 文件中设置的特定外部属性,如 spring.datasource.*属性等

E.无论你的应用是否是一个多模块对象

【正确答案】ABD

【答案解析】和多模块对象无关,和包结构无关

48.关于 BeanPostProcessor 扩展点,以下哪些说法是正确的?(选择两项)

A.BeanPostProcessors 在 bean 生命周期的 init 阶段被调用 

B.可以实现自定义 BeanPostProcessor 

C.在注入依赖项之前,BeanPostProcessors 就被调用 

D.在 BeanFactoryPostProcessors 被调用之前, BeanPostProcessors 就被调用 

【正确答案】A,B

【答案解析】

49.关于 Spring 和 Spring Boot Testing,以下哪些说法是正确的?(选择两项)

A.spring-boot-starter-test 依赖项提供了@Mock 和@MockBean 等注解

B.你可以使用@SpringBootTest 或@ContextConfiguration 来创建 Spring 应用上下文

C.它同时支持集成测试和分片单元测试

D.它支持即用的 EasyMock

【正确答案】B,C

【答案解析】

50.关于 Spring Boot 自动配置的自定义,以下哪些说法是正确的?(选择两项)

A.你可以通过将自动配置类子类化,明确地禁用一些自动配置 

B.你可以通过在 application. properties 文件中设置一个属性或使用@EnableAutoConfiguration 注解上的 exclude 属性来明确地禁用一些自动配置 

C.如果某些自动配置不适合你的需要,你可以明确地禁用它 

D.你只能禁用所有的自动配置。即,你不能只禁用部分自动配置 

【正确答案】B,C

【答案解析】可以禁用一部分,可以在配置文件中禁用,自动配置类没有子类化的说法

AutoConfiguration可以通过以下方式:控制,属性,明确的bean定义;禁用自动配置;改变依赖版本。

51、【多选题】

关于 Spring AOP,以下哪些说法是正确的?(选择两项)

A.横切关注点的例子包括安全、缓存、事务 

B.Spring AOP 不使用 AspectJ 的 pointcut 表达式语言 

C.无论方法是否成功返回或抛出异常,都会调用"After"advice 类型

D.在 Spring AOP 中,一个 join point 代表一个方法执行或属性访问 

【正确答案】A,C

【答题时间】2021-10-17 04:34:26

【答案解析】A横切关注点就是非核心的扩展逻辑 。B:SpringAOP使用的就是AspectJ。C无论是否发生异常都会执行"After"advice。因为它在方法运行之前运行。D。一个join point表示一个连接点

 

52.关于 pointcut 表达式,以下哪些说法是正确的?(选择两项)

A.pointcut 表达式的方法名不能有通配符 

B.pointcut 表达式可以包括以下运算符:&&(and)、ll(or)、!(not) 

C.pointcut 表达式可以用来选择已被特定注解的 join point 

D.pointcut 表达式不能指定参数的类型 

【正确答案】B,C

【答题时间】2021-10-17 04:34:26

【答案解析】

 可以有通配符,B可以包括运算符,C可以使用注解确定连接点的位置,D可以确定切入点的表达式

53.当 Spring 在基于 Spring Boot 的 Spring MVC 应用程序中找到"spring-boot-starter-web"依赖项时, Spring 会自动执行哪些任务?(选择三项)

A.设置了一个将被 Controller 或 Services 使用的 Persistent Provider 

B.设置默认静态资源位置 

C.设置默认信息转换器 

D.设置一个 DispatcherServlet 

E.为 Controller 设置一个 Actuator endpoint 

【正确答案】B,C,D

【答题时间】2021-10-17 04:34:26

【答案解析】

54.考虑下图中的类。 @Entity public class Customer { @Id private Long id; private String name; private Date orderDate; private String email; } 以下哪些 Repository 方法可以由 Spring Data JPA 自动实现?(选择两项)

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

【答题时间】2021-10-17 04:34:26

【答案解析】A没有get这个写法,C,写法错误没有Max的写法

 

55.关于基于 Spring Boot 的 Spring MVC 应用程序,以下哪些说法是正确的?(选择两项)

A.Jetty 是默认的嵌入式 Web 服务器 

B.Spring Boot 默认启动嵌入式 Web 服务器 

C.你可以在运行时让两台嵌入式服务器共享同一个端口 

D.你可以用你选择的服务器替换默认的嵌入式 Web 服务器 

【正确答案】B,D

【答题时间】2021-10-17 04:34:26

【答案解析】

 默认的嵌入式web服务器是tomcat,一个端口只能够有一个服务器

 外部化属性:_sayhitoloverOvO的博客-CSDN博客

56.当多个 bean 与依赖项的类型相匹配时,以下是可能的自动布线机制。其中哪个是正确的?(选择两项)

A只在 setter 方法中使用@Qualifier 注解(@Autowired 对于 setter 是可选的) 

B.使用@Qualifier 和@Autowired 注解以及 setter 方法 

C.在字段上同时使用@Qualifier 和@Autowired 注解 

D.只在字段上使用@Qualifier 注解(@Autowired 对字段是可选的) 

【正确答案】B,C

【答题时间】2021-10-17 04:34:26【答案解析】自动布线:Autowired,即自动装配。 本题考察如果有多个类型相同的 Bean 时,如何实现自动装配。 除了构造方法以外,无论是通过 Setter 还是字段注入,都必须使用@Autowired 注解,当存在多个类型相同的 Bean 时, 还必须配合@Qualifier 一起使用,即在同一处同时使用这 2 个注解

  

57.Spring Environment(可以)从哪里获得获得它的属性源集?(选择所有适用的)

A.从通过@ PropertySource 注解指定的属性文件 

B.从 JVM 系统属性 

C.从应用程序定义的环境变量 

D.从系统属性,如 os.name 

【正确答案】A,B,C

【答题时间】2021-10-17 04:34:26

【答案解析】

58以下哪些是@Transactional 注解的有效可选属性?(选择两项)

A.writeOnly 

B.nestedTransaction 

C.isolation

D.propagation 

【正确答案】C,D

【答题时间】2021-10-17 04:34:26

【答案解析】isolation隔离性 propagation传播性 

@Transactional注解的全部属性详解

59.以下哪些注解是由@Spring Boot Application 组成的注解的元注解?(选择两项)

A.@SpringBootConfiguration 

B.@Autowired 

C.@SpringApplication 

D.@ComponentScan 

【正确答案】A,D

【答题时间】2021-10-17 04:34:26

【答案解析】@Spring Boot Application由@ComponentScan,@SpringBootConfiguration和

@EnableAutoConfiguration 组成,详情:​​​​​​Springboot启动项流程_sayhitoloverOvO的博客-CSDN博客

 

60.关于构造函数注入,以下哪些说法是正确的?(选择两项)

A.使用构造函数注入可以实现不变性 

B.如果只有一个构造函数,则不需要使用@Autowired 注解 

C.在一个目标 bean 中,构造函数注入和字段注入不能同时使用 

D.从测试的角度看,字段注入优于构造函数注入 

【正确答案】A,B

【答题时间】2021-10-17 04:34:26

【答案解析】A:不变性:Spring 不提倡使用字段注入(即声明依赖项属性并添加@Autowired),因为存在 NPE 的风险,主要表现为 在执行单元测试时(单元测试:无任何其它环境,包括 Spring 环境,如果测试时加载 Spring 或其它环境,则称之为集成 测试,甚至可能是系统测试),如果没有对依赖项属性赋值,则会因为依赖项属性值没有值而导致 NPE,所以 Spring 鼓励 使用构造方法注入,当使用构造方法注入时,不需要 Setter,对于类的外部而言,则没有了修改依赖项属性值的入口,从 而达成“不变性”,同时,也消除了 NPE 风险,除非你显式的传递一个 null 到构造方法的调用中。 B:Spring 会自动调用无参数构造方法(如果存在)来创建对象;如果缺失无参数构造方法,当仅 1 个构造方法时, Spring 也会自动调用;当存在多个构造方法时,Spring 仍会自动尝试调用无参数构造方法(如果存在),如果需要 Spring 调用特定的构造方法,需要在指定的构造方法上添加@Autowired 注解; C:错误,可以同时使用构造方法、Setter 方法和字段注入; D:同 A 的解析,使用字段注入存在 NPE 风险。

61.当 Spring 容器正常关闭时,要在 bean 上调用"cleanup"方法,可以使用以下哪种技术?(选择两项)

A.用@PreDestroy 注解该方法 

B.任何方法名为 preDestroy 的方法都会被自动调用 

C.在@Configuration 类中,用@Bean(destroyMethod="cleanup")来注解创建该 bean 的方法 

D.定义一个 id="shutdown"的 bean,让它调用 cleanup 方法 

【正确答案】A,C

【答题时间】2021-10-10 04:33:00

【答案解析】销毁容器时,可以使用@PreDestroy注解,在该bean销毁之前执行一个逻辑方法,而不是调用另一个bean。

62.下图显示了在"META-INF/spring.factories"文件中指定的自动配置类 @Configuration @ConditionalOnClass(HelloService.class) public class HelloAutoConfig{ @ConditionalOnMissingBean(HelloService.class) @Bean HelloService helloService(){ return new TypicalHelloService(); } 以下哪些说法是正确的?(选择两项)

A.只有当 ApplicationContext 中没有其他 HelloService bean 时,才会从 helloService()方法中创建一个新的 HelloService bean 

B.只有当 HelloService.class 在 classpath 中时,才会使用这个自动配置类 

C.从 helloService()方法中将创建一个新的 HelloService bean,如果 ApplicationContext 中已有一个 HelloService bean,它将替换现有的 HelloService bean 

D.即使 HelloService.class 不在 classpath 中,也会从 helloService()方法中创建一个新的 HelloService bean 

【正确答案】A,B

【答题时间】2021-10-17 04:34:26

【答案解析】--- @ConditionalOnClass:是 Spring Boot 实现自动配置的重要支撑之一。其用途是判断当前 classpath 下是否 存在指定类,若是则将当前的配置装载入 spring 容器; --- @ConditionalOnMissingBean:在容器加载它作用的 bean 时,检查容器中是否存在目标类型 (ConditionalOnMissingBean 注解的 value 值)的 bean 了,如果存在跳过原始 bean 的 BeanDefinition 加载动 作

63.关于 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

【答题时间】2021-10-17 04:34:26

【答案解析】

64.以下代码显示了一个将用于创建ClientService bean的Java配置类。对该类还需要做哪些工作?(选择两项) public class AppConfig{ public ClientService clientService(){ return new ClientServiceImpl(); } }

A.该方法应该用@Autowired 进行注解 

B.该方法应该用@Bean 进行注解 

C.该类应该用@Configuration 进行注解 

D.该类应该用@ComponentScan 进行注解 

【正确答案】B,C

【答题时间】2021-10-17 04:34:26

【答案解析】如果要使得方法的返回对象被 Spring 管理,该方法必须添加@Bean 注解,且该方法所在的类必须被 Spring 上下文加载,例如该类添加@Configuration 作为配置类,或被其它类@Import 导入,甚至直接作为创建上下文对象时的参数。

 

65.关于 TestRestTemplate,以下哪些说法是正确的?(选择两项)

A.当使用 TestRestTemplate 的 getForObject(..)方法时,你需要提供完整的路径(就像你在 RestTemplate 中做的那样),而不是作为第一个参数的相对路径 

B.它可以方便地替代 RestTemplate 进行集成测试 

C.它是 RestTemplate 类的一个子类 

D.当使用@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)时,预先配置的 TestRestTemplate 知道向哪个端口发送请求 

【正确答案】B,D

【答题时间】2021-10-17 04:34:26

【答案解析】

 

66.以下关于@Autowired 注解的哪些说法是正确的?(选择两项)

A.可以使用 Autowired 将多个参数注入到一个方法中 

B.默认情况下,如果一个依赖项不能用@Autowired 来满足, Spring 会抛出一个 RuntimeException 

C.它不能用来注解字段,只能用来注解构造函数和方法 

D.如果在一个类上使用了@Autowired,则会自动对所有的依赖项进行字段注入 

【正确答案】A,B

【答题时间】2021-10-17 04:34:26

【答案解析】C:不能用于注解字段,错误; D:@Autowired 不是用于类上的。

 

67.以下哪项注解将一个类标记为组件扫描器的 Spring bean?(选择四项)

A.@Autowired 

B.@Configuration 

C.@Service 

D.@Controller 

E.@Aspect 

F.@Component 

【正确答案】B,C,D,F

【答题时间】2021-10-17 04:34:26

【答案解析】A:@Autowired 是用于属性、Setter、构造方法的,并不用于类;E:@Aspect 只表示类是一个“切面类”,需结合@Component 或其它组件注解才可以被 Spring 扫描。

68.关于 Spring Boot Testing,以下哪些说法是正确的?(选择两项)

A.在 Spring Boot 应用程序中,每个测试类都必须用@SpringBootTest 来注解 

B.你不能指定配置类作为@SpringBootTest 的属性 

C.@SpringBootTest 通常用于集成测试 

D.用@SpringBootTest 注解的测试代码没有任何配置类,在应用程序中只有一个用@SpringBootConfiguration 注解的类 

【正确答案】C,D

【答题时间】2021-10-17 04:34:26

【答案解析】

 69.关于基于 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

【答题时间】2021-10-17 04:34:26

【答案解析】

 【答案解析】A:还可以是可以是war文件    B:只能有一个

 

70.关于 Spring 的 JPA 支持,以下哪些说法是正确的?(选择两项)

A.Spring 可以使用@Transactional 注解将多个 JPA persistence 操作协调到一个事务中 

B.在使用 JPA 时,Spring 需要一个 persistence.xml 配置文件,因为 JPA 规范中要求这个文件 

C.Spring 允许将 EntityManagerFactory 配置为 Spring Bean 

D.Spring 提供了自己的 JPA 实现 

【正确答案】A,C

【答题时间】2021-10-17 04:34:26

【答案解析】B Spring使用JPA时,不需要配置文件,Spring 未提供了自己的 JPA 实现 

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值