Appearance
1.SpringBoot全局异常处理如何实现?
- 类上加注解
@RestControllerAdvice
- 方法上加注解
@ExceptionHandler(value = 异常类型.class)
- 捕捉固定异常类型,返回JSON格式的数据,详见SpringBoot全局异常处理
- 项目中可以使用自定义异常和全局异常处理,实现抛出业务异常返回规定格式的JSON数据
2.如何全局统一返回固定格式的JSON数据?
- 实现
ResponseBodyAdvice<Object>
接口 - 处理指定包下的接口
@RestControllerAdvice(basePackages = "com.xk857")
- 重写
beforeBodyWrite
方法,返回如Result规范化的对象
3.SpringBoot如何实现异步任务?
- 启动类开启
@EnableAsync
- 方法或类加上
@Async
4.获取配置文件的方式你知道几种?
- 方法上加注解
@ConfigurationProperties(prefix = "file")
,然后定义私有变量,使用时使用@Autowired
注入这个类 @Value("${file.windows}")
5.SpringBoot过滤器如何实现?
- 启动类增加
@ServletComponentScan
implements Filter
@WebFilter
标记一个类- urlPatterns:拦截规则,支持正则;
@WebFilter(urlPatterns="/vi/pri/**")
- chain.doFilter表示放行
6.Spring事务的实现方式和实现原理
Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持Spring是 无法提供事务功能的。真正的数据库层的事务提交和回滚是通过binlog或者redolog实现的。
- 编程式,beginTransaction()、commit()、rollback()等事务管理相关的方法
- 声明式,利用注解 Transactional 或者 aop 配置
7.SpringAOP的通知类型。
@Befor
e前置通知:在执行目标方法之前运行@After
后置通知:在目标方法运行结束之后@AfterReturning
返回通知:在目标方法正常返回值后运行@AfterThrowing
异常通知:在目标方法出现异常后运行@Around
环绕通知:
8.@Resource和@Autowired依赖注入的区别是什么?
@Resource
:java自带,只能作用在熟悉,根据现根据名称,没找到再根据类型注入对象@Autowired
:先按照类型,没找到再根据熟悉值
9.如果有IOC多个实现,注入时该如何指定?
@Resource(name="")
- @Autowired需要追加一个
@Qualifier("名称")
10.SpringBoot常见注解
- @Component(任何层) @Controller @Service @Repository(dao): 用于 实例化对象
- @Scope : 设置 Spring 对象的作用域
@PostConstruct
or@PreDestroy
: 用于设置 Spring 创建对象在对象创建之后和销毁之前要执行的方法- @Value: 简单属性的依赖注入
- @Autowired: 对象属性的依赖注入
- @Qualifier: 要和@Autowired 联合使用,代表在按照类型匹配的基础上,再按照名称匹配。
- @Resource:按照属性名称依赖注入
- @ComponentScan: 组件扫描
- @Bean: 表在方法上,用于将方法的返回值对象放入容器
- @PropertySource: 用于引入其它的 properties 配置文件
- @Import: 在一个配置类中导入其它配置类的内容
- @Configuration: 被此注解标注的类,会被 Spring 认为是配置类。Spring 在启动的时候会自动扫描并加载所有配置类,然后将配置类中bean放入容器
- @Transactional:开始事务
@RestControllerAdvice
或@ControllerAdvice
:全局异常处理@WebFilter
过滤器