基本概念
Spring Boot与Spring Cloud有什么区别
SpringBoot是Spring快速开发框架
,SpringCloud是包含一系列组件的完整的微服务框架
,SpringCloud依赖于SpringBoot。
Spring Boot核心配置文件是什么?有何区别 ?
bootstrap
(.yml或.properties):boostrap 由父ApplicationContext
加载的,比applicaton 优先加载,配置在应用程序上下文的引导阶段生效。一般来说我们在Spring Cloud配置就会使用这个文件。且 boostrap里面的属性不能被覆盖
;application
(.yml或.properties):由ApplicatonContext
加载,用于Spring Boot项目的自动化配置。
Spring Boot项目如何热部署?
使用devtools工具
来实现,但是生产环境不建议使用。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
Spring Boot中如何实现定时任务?
- Spring中的
@Scheduled
注解。 - 第三方框架
Quartz
。
Spring Boot打成的jar和普通的jar有什么区别?
- Spring Boot项目最终打包成的jar是可执行jar,这种jar可以直接通过
java -jar xxx.jar
命令来运行,这种jar不可以作为普通的jar被其他项目依赖,即使依赖了也无法使用其中的类。 - Spring Boot的jar无法被其他项目依赖,主要还是他和普通jar的结构不同。普通的jar包解压后直接就是包名,包里就是我们的代码,而Spring Boot打包成的可执行jar解压后,在
\BOOT-INF\classes
目录下才是我们的代码,因此无法被直接引用。 - 如果非要引用,可以在pom.xml文件中增加配置,将Spring Boot项目打包成两个jar,一个可执行,一个可引用。
常用注解
Spring Boot的核心注解是哪个?它由哪几个注解组成的?
核心注解是@SpringBootApplication
,主要组合包含了以下 3 个注解:
@SpringBootConfiguration
:组合了@Configuration
注解,实现配置文件的功能。@EnableAutoConfiguration
:打开自动配置的功能,也可以关闭某个自动配置的选项。
java关闭数据源自动配置功能:
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
@ComponentScan
:Spring组件扫描。
其他常用注解
@Repository
@Service
@RestController
@ResponseBody
启动过程
SpringBoot的启动过程是怎样的?
- 创建定时器stopWatch并启动
- 获取并运行listeners[SpringApplicationRunListeners]
- 打印banner
- 创建上下文ApplicationContext(判断是否webEnvironment加载AnnotationConfigApplicationContext或AnnotationConfigEmbeddedWebApplicationContext)
- 预处理上下文(context,listeners,args-ResourceLoader加载类)
- 刷新上下文(refresh添加后置处理器)
- 再刷新上下文(sort后置处理器排序)
- listeners发布finish(callFinishedListener)
- 定时器stopWatch停止计时
- 打印启动日志