面试题15道:腾讯二面:SpringBoot 有几种读取配置文件的方式?你详细说一下每种方式是怎么使用的 ?_哔哩哔哩_bilibili
1. SpringBoot 有几种读取配置文件的方式?你详细说一下每种方式是怎么使用的 ?
2. 为什么会出现跨域问题 ?你详细说一下SpringBoot解决跨域的方案 !
3. SpringBoot项目启动慢,如何优化springboot的启动速度 ?
4. SpringBoot可以同时处理多少请求 ?
5. 为什么SpringBoot使用cglib作为默认动态代理 ?AOP使用jdk动态代理会有什么问题 ?
6. 什么是Spring Boot自动装配?你说一下SpringBoot自动配置原理?★★★
7. 你知道SpringBoot项目是如何启动的吗?说说SpringBoot的启动原理?★★★
8. 你有没有看过源码?详细说说SpringBoot内置Tomcat启动过程与原理 ?
9. 为什么SpringBoot的jar可以直接运行?有哪些原因 ?
10. SpringBoot的默认日志实现框架是什么?怎么切换成别的?
11. 说说你在开发的时候怎么在SpringBoot的基础上做扩展?
- Spring:有接口使用JDK动态代理,没有接口使用cglib动态代理;
- SpringBoot:强制使用cglib动态代理。
12. springboot读取配置文件原理是什么 ? 加载顺序优先级是怎么样的 ?
13. 如何使用 SpringBoot 自定义 starter?你说下大概实现过程 ?
14. 简历上你写的看过源码,你说说SpringBoot外部Tomcat启动原理?
打包方式改为war,排除tomcat依赖,创建一个类继承SpringBootServletInitializer并重写configure方法,将启动类传入其中。
15. SpringBoot有哪些核心注解 ?
- @SpringBootApplication注解:这个注解标识了一个SpringBoot 工程,它实际上是另外三个注解的组合,其中两个注解是:
- @SpringBootConfiguration:这个注解实际就是一个@Configuration,表示启动类也是一个配置类
- @EnableAutoConfiguration:向Spring容器中导入了一个Selector,用来加载ClassPath下SpringFactories中所定义的自动配置类,将这些自动加载为配置Bean
- @Conditional也很关键,如果没有它我们无法在自定义应用中进行定制开发
- @ConditionalOnBean
- @ConditionalOnMissingBean
- @ConditionalOnClass
- @ConditionalOnExpression
- @ConditionalOnMissingExpression等等
另外,像@Bean、@Import、@Configuration这些严格说来,其实是Spring的注解。
Spring Boot的核心注解主要用于简化配置和快速启动Spring应用。以下是几个关键的注解:
@SpringBootApplication
:这是最常用的注解,它结合了@Configuration
(表示这是一个配置类),@EnableAutoConfiguration
(开启自动配置)和@ComponentScan
(扫描@Component及其子注解如@Service, @Repository等)三个注解的功能。
@Configuration
:这个注解用于标记一个类为@Configuration bean,它允许你在其中定义bean的实例化逻辑。
@EnableAutoConfiguration
:当这个注解添加到类上时,Spring Boot会根据项目中的依赖自动配置bean。例如,如果项目中有JDBC库,那么Spring Boot会自动配置数据源。
@Component
,@Service
,@Repository
,@Controller
:这些是Spring的组件注解,分别用于标记普通bean、业务层bean、数据访问层bean和控制器层bean。
@RestController
:在@Controller之上,添加了@RequestMapping注解的默认行为,用于创建RESTful服务。
@Autowired
:用于注入bean,Spring会自动将匹配的bean注入到标注的字段或方法中。
@Value
:用于注入配置属性值,可以是从application.properties或application.yml文件中读取的。
@Bean
:该注解用于声明一个方法将返回的对象注册为Spring容器中的bean。