java Spring Boot面试题----持续补充

主文章(我总结的面试题的索引目录—进不去就说明我还没写完)
https://blog.csdn.net/grd_java/article/details/122357831

1. 必问

什么是Spring boot

  1. Spring Boot 是解决Spring频繁编写样板代码和配置的解决方案
  2. 随着新功能的增多,Spring越来越复杂,一个大型项目往往由多个微服务组成,每个微服务都是Spring项目,每一个项目都需要添加构建路径,添加Maven依赖,配置应用服务器,并做繁琐的spring配置工作
  3. 而Spring boot可以让我们以最少的工作量快速搭建一个spring项目,更加健壮的使用Spring

Spring Boot的优势

  1. 开发量、测试成本、对配置的关注减少((封装了一整套默认值,快速开发))
  2. 使用JavaConfig配置,可以避免配置XML
  3. 避免大量的Maven导致版本冲突
  4. 集成单独Web服务器,不再需要Tomcat、Glassfish或其它东西

什么是JavaConfig

  1. Spring社区产品,提供配置Spring IoC的纯Java模式,避免配置繁琐的XML文件
  2. 由于是通过Java类配置,所以可以充分使用面向对象特点,例如一个配置类继承另一个,重写@Bean方法等
  3. 提供纯Java配置的支持,可以完全放弃xml,springBoot使用了yaml文件作为配置文件,只需少量配置,而大部分配置,已经有默认配置了,只有在需要个性化配置时,才需要修改它们
  4. 类型安全,重构友好。Java5对泛型的支持,现在可以按照类型而不是名称检索Bean,不需要任何强制转换或字符串查找

什么是YAML?

  1. YAML是一种可读的数据序列化语言,常用于作为配置文件
  2. 比起属性文件,它的结构更加清晰,不容易混淆,具有分层配置数据的特性

2. Spring boot 注解

Spring Boot中常用注解有哪些(包括Spring、Spring MVC)?尽量说明细节。

  1. @SpringBootApplication:作用于类上,是spring boot的注解,标识一个SpringBoot程序的入口,此类将称为Spring Boot启动类
  2. @Controller:作用在类上,是Spring的注解,标识此类为Controller控制器组件
  3. @Service:作用在类上,是Spring的注解,标识此类为Service业务层组件
  4. @Repository:作用在类上,是Spring的注解,标识此类为持久层组件
  5. @Component:作用在类上,是Spring的注解,标识此类为一个组件,可以被Spring扫描到,用在不确定到的是那一层的类
  6. @Configuration:作用在类上,是Spring的注解,封装了@Component组件,标识此类为一个配置类
  7. @ComponentScan:作用在类上,是Spring的注解,最好是启动类,指定Spring去哪扫描组件
  8. @ResponseBody:作用在类或方法上,是Spring MVC的注解,标识此类所有方法或特定方法,响应数据,直接封装到http response body中(响应体)
  9. @RestController:作用在类上,是Spring MVC的注解,相当于@Controller+@ResponseBody
  10. @RequestMapping:作用在类或方法上,是Spring MVC的注解,标识此类的Handler(处理请求的方法)的请求路径,最终,类上面的+方法上面的=最终url路径。需要手动指定处理get、post、delete、put
  11. @Get/Post/Delete/PutMapping:作用在方法上,是Spring MVC的注解,封装了RequestMapping,处理指定请求方式的RequestMapping。比如GetMapping就是处理get请求的。
    在这里插入图片描述
  12. @Autowired:作用在属性上,是Spring的注解,按类型从springIoC容器注入对象
  13. @MapperScan():作用于启动类,是Mybatis的注解,比较常用,用来扫描指定包下所有Mapper接口,一般Mapper接口都放一起。
  14. 以及一些配置相关的注解,都属于Spring
  1. @Bean,
  2. @PropertySource(“classpath:jdbc.properties”)//加载指定外部配置资源properties
  3. 使用properties用@Value("$ {jdbc.driver}") ,如果配置文件是yaml使用@Value("${jwt.secret}"),
  1. Spring AOP和声明式事务相关注解,都属于Spring
  1. @EnableAspectJAutoProxy:开启AOP注解驱动,扫描@Aspect
  2. @EnableTransactionManagement:开启声明式事务
  3. @Transactional:类或方法上,标识使用声明式事务横切逻辑
  4. @Aspect(“切面名,可省略”):标识到类上,标识一个切面类
  5. @Pointcut(“execution(* com.yzpnb.advanced_application.service.impl.TransferServiceImpl.*(…))”):切入点
  6. @Before、@After、@AfterThrowing、@AfterReturning、@Around(“tp1()”):前置、后置、错误、成功、环绕通知注解
  1. Bean特性(BeanDefinition,是Spring保存Bean的信息的对象)和Bean生命周期注解
  1. @lazy:作用于类上,标识此Bean为懒加载
  2. @Scope :作用于类上,标识此Bean的生命周期,是单例,还是原型模式对象
  3. @PostConstruct:作用方法上,标识此方法是init-method
  4. @PreDestroy:作用方法上,标识此方法是destory-method

3. 偏向于实战的问题,莫名其妙?

如何重新加载Spring Boot上的更改,而无需重新启动服务器?

  1. 使用DEV工具,Spring Boot的一个DevTools模块(开发工具),助于提高开发人员生产力,可以重新加载Spring Boot上的更改,无需重启服务器
  2. 还提供了H2数据库控制台,可以更好的测试应用程序
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-devtools</artifactId>
	<optional>true</optional>
</dependency>

spring boot监视器是什么?

  1. Spring boot actuator,Spring启动框架的重要功能之一,可以帮助我们访问生产环境中正运行的应用程序的当前状态
  2. 监视模块,公开了一组可直接作为HTTP URL访问的REST断点来检查状态

如何在SpringBoot中禁用Actuator断点安全性?

  1. 默认情况下,敏感HTTP端点都是安全的,只有具有ACTUATOR角色用户才能访问它们,安全性是使用标准的HttpServletRequest.isUserInRole方法实施的,我们可以使用它来禁用安全性,只有执行机构断点防火墙后访问,才建议禁用安全性。

如何在自定义端口运行Spring Boot应用程序?

  1. 可以在application.properties或application.yaml文件中指定server.port配置

如何实现Spring Boot应用程序的安全性?

  1. 可以使用Spring Security,引入依赖spring-boot-starter-security依赖项
  2. 配置相关安全配置,代码很少,核心配置类,只需要继承WebSecurityConfigurerAdapter类,覆盖里面的方法
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

殷丿grd_志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值