什么是spring boot?为什么要用?
spring boot 基于 spring 框架的快速开发整合包。
好处:
- 编码变得简单
- 配置变得简单
- 部署变得简单
- 监控变得简单
spring boot核心配置文件是什么?
Spring Boot 有两种类型的配置文件,application 和 bootstrap 文件
Spring Boot会自动加载classpath目前下的这两个文件,文件格式为 properties 或 yml 格式
*.properties 文件是 key=value 的形式
*.yml 是 key: value 的形式
*.yml 加载的属性是有顺序的,但不支持 @PropertySource 注解来导入配置,一般推荐用yml文件,看下来更加形象
bootstrap 配置文件是系统级别的,用来加载外部配置,如配置中心的配置信息,也可以用来定义系统不会变化的属性.bootstatp 文件的加载先于application文件
application 配置文件是应用级别的,是当前应用的配置文件
参考:
- https://www.jianshu.com/p/f3ab8cc027b7
spring boot有哪些方式可以实现热部署?
- pring Loaded
- spring-boot-devtools
- JRebel插件
@Transactional 注解哪些情况下会失效?
1、@Transactional 作用在非 public 修饰的方法上
2、@Transactional 作用于接口,使用 CGLib 动态代理
3、@Transactional 注解属性 propagation 设置以下三种可能导致无法回滚
- SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。
- NOT_SUPPORTED:以非事务方式运行,如果当前存在事务,则把当前事务挂起。
- NEVER:以非事务方式运行,如果当前存在事务,则抛出异常。
4、同一类中加 @Transactional 方法被无 @Transactional 的方法调用,事务失效
5、@Transactional 方法内异常被捕获
6、默认 RuntimeException 和 Error 及子类抛出,会回滚;rollbackFor 指定的异常及子类发生才会回滚
7、数据库不支持事务,如 MySLQL 使用 MyISAM 存储引擎
8、Spring 的配置文件中未配置事务注解生效
<tx:annotation-driven transaction-manager="transactionManager"/>
9、Spring Boot 引入 jbdc 或 jpa 包,默认事务注解。若未引入这两个包,需要使用 @EnableTransactionManagement 进行配置
分析见:这里