框架篇之SpringBoot

2023-09-24 八股文
1.SpringBoot全局异常处理如何实现?
  1. 类上加注解@RestControllerAdvice
  2. 方法上加注解@ExceptionHandler(value = 异常类型.class)
  3. 项目中可以使用自定义异常和全局异常处理,实现抛出业务异常返回规定格式的JSON数据
2.如何全局统一返回固定格式的JSON数据?
  1. 实现ResponseBodyAdvice<Object>接口
  2. 处理指定包下的接口@RestControllerAdvice(basePackages = "com.xk857")
  3. 重写beforeBodyWrite方法,返回如Result规范化的对象
3.SpringBoot如何实现异步任务?
  1. 启动类开启@EnableAsync
  2. 方法或类加上@Async
4.获取配置文件的方式你知道几种?
  1. 方法上加注解@ConfigurationProperties(prefix = "file"),然后定义私有变量,使用时使用@Autowired注入这个类
  2. @Value("${file.windows}")
5.SpringBoot过滤器如何实现?
  1. 启动类增加@ServletComponentScan
  2. implements Filter
  3. @WebFilter标记一个类
  4. urlPatterns:拦截规则,支持正则;@WebFilter(urlPatterns="/vi/pri/**")
  5. chain.doFilter表示放行
6.Spring事务的实现方式和实现原理

Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持Spring是 无法提供事务功能的。真正的数据库层的事务提交和回滚是通过binlog或者redolog实现的。

  1. 编程式,beginTransaction()、commit()、rollback()等事务管理相关的方法
  2. 声明式,利用注解 Transactional 或者 aop 配置
7.SpringAOP的通知类型。
  • @Before前置通知:在执行目标方法之前运行
  • @After后置通知:在目标方法运行结束之后
  • @AfterReturning返回通知:在目标方法正常返回值后运行
  • @AfterThrowing异常通知:在目标方法出现异常后运行
  • @Around环绕通知:
8.@Resource和@Autowired依赖注入的区别是什么?
  • @Resource:java自带,只能作用在熟悉,根据现根据名称,没找到再根据类型注入对象
  • @Autowired:先按照类型,没找到再根据熟悉值
9.如果有IOC多个实现,注入时该如何指定?
  • @Resource(name="")
  • @Autowired需要追加一个@Qualifier("名称")
10.SpringBoot常见注解
  1. @Component(任何层) @Controller @Service @Repository(dao): 用于 实例化对象
  2. @Scope : 设置 Spring 对象的作用域
  3. @PostConstructor@PreDestroy : 用于设置 Spring 创建对象在对象创建之后和销毁之前要执行的方法
  4. @Value: 简单属性的依赖注入
  5. @Autowired: 对象属性的依赖注入
  6. @Qualifier: 要和@Autowired 联合使用,代表在按照类型匹配的基础上,再按照名称匹配。
  7. @Resource:按照属性名称依赖注入
  8. @ComponentScan: 组件扫描
  9. @Bean: 表在方法上,用于将方法的返回值对象放入容器
  10. @PropertySource: 用于引入其它的 properties 配置文件
  11. @Import: 在一个配置类中导入其它配置类的内容
  12. @Configuration: 被此注解标注的类,会被 Spring 认为是配置类。Spring 在启动的时候会自动扫描并加载所有配置类,然后将配置类中bean放入容器
  13. @Transactional:开始事务
  14. @RestControllerAdvice@ControllerAdvice:全局异常处理
  15. @WebFilter过滤器
上次更新: 5 个月前