Java面试题整理《SpringBoot篇》三

本文介绍了SpringBoot的核心配置文件bootstrap.properties和application.properties的区别,bootstrap在SpringCloud场景下用于加载远程配置,其配置优先级高于application。同时,文章探讨了SpringBoot的starter特性,如何简化依赖管理和开发流程。JavaConfig提供了纯Java的配置方式,增强了类型安全和重构友好性。此外,还解释了CSRF攻击的概念及其危害。

bootstrap.properties 和 application.properties 有何区别 ?
单纯做 Spring Boot 开发,可能不太容易遇到 bootstrap.properties 配置文件,但是在结合 Spring Cloud 时,这个配置就会经常遇到了,特别是在需要加载一些远程配置文件的时侯。

spring boot 核心的两个配置文件:

bootstrap (. yml 或者 . properties):boostrap 由父 ApplicationContext 加载的,比 applicaton 优先加载,配置在应用程序上下文的引导阶段生效。一般来说我们在 Spring Cloud Config 或者 Nacos 中会用到它。且 boostrap 里面的属性不能被覆盖;
application (. yml 或者 . properties): 由ApplicatonContext 加载,用于 spring boot 项目的自动化配置。
开启SpringBoot特性的几种方式?
继承spring-boot-starter-parent项目
导入spring-boot-dependencies项目依赖
SpringBoot 中的starter?
starter可以理解成对依赖的一种合成,避免了开发人员手动添加依赖,大大的提升了开发效率。

程序中定义了一个starter的jar包,通过@Configuration配置类,将这些bean定义到里面,然后在starter包的META-INF/spring.factories中写入配置类,Springboot按照约定来加载配置类。开发人员只需要将相应的starter包的依赖添加到应用中,进行相应的属性配置(有默认值),就可以直接进行代码开发了。

什么是 JavaConfig?
Spring JavaConfig 是 Spring 社区的产品,Spring 3.0引入了他,它提供了配置 Spring IOC 容器的纯Java 方法。因此它有助于避免使用 XML 配置。

JavaConfig 的优点:

面向对象的配置。由于配置被定义为 JavaConfig 中的类,因此用户可以充分利用 Java 中的面向对象功能。一个配置类可以继承另一个,重写它的@Bean 方法等。
减少或消除 XML 配置。JavaConfig 为开发人员提供了一种纯 Java 方法来配置与 XML 配置概念相似的 Spring 容器。
类型安全和重构友好。JavaConfig 提供了一种类型安全的方法来配置 Spring容器。由于 Java5.0 对泛型的支持,现在可以按类型而不是按名称检索 bean,不需要任何强制转换或基于字符串的查找。
常用的Java config:

@Configuration:在类上打上写下此注解,表示这个类是配置类
@ComponentScan:在配置类上添加 @ComponentScan 注解。该注解默认会扫描该类所在的包下所有的配置类,相当于之前的 <context:component-scan >。
@Bean:bean的注入:相当于以前的< bean id=“objectMapper” class=“org.codehaus.jackson.map.ObjectMapper” />
@EnableWebMvc:相当于xml的<mvc:annotation-driven >
@ImportResource: 相当于xml的 < import resource="applicationContext-cache.xml
CSRF 攻击?
CSRF 代表跨站请求伪造。这是一种攻击,迫使最终用户在当前通过身份验证的Web 应用程序上执行不需要的操作。CSRF 攻击专门针对状态改变请求,而不是数据窃取,因为攻击者无法查看对伪造请求的响应。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值