八股文巴拉巴拉说第三期(spring篇)

71649795a1889c217605ddc37a315758.png

点击上方“蓝字”关注我们

715463936dd42b6c6608ae185291b00d.png

Q:spring boot 核心配置文件是什么?bootstrap.properties 和 application.properties 有何区别 ?

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

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

1、bootstrap (. yml 或者 . properties):boostrap 由父 ApplicationContext 加载的,比 applicaton 优先加载,配置在应用程序上下文的引导阶段生效。一般来说我们在 Spring Cloud Config 或者 Nacos 中会用到它。且 boostrap 里面的属性不能被覆盖。

2、application (. yml 或者 . properties):由ApplicatonContext 加载,用于 spring boot 项目的自动化配置。

905c13b3a690af6b6464bc9b12193668.png

Q: 什么是 Spring Profiles?

Spring Profiles 允许用户根据配置文件(dev,test,prod 等)来注册 bean。因此,当应用程序在开发中运行时,只有某些 bean 可以加载,而在 PRODUCTION中,某些其他 bean 可以加载。假设我们的要求是 Swagger 文档仅适用于 QA 环境,并且禁用所有其他文档。这可以使用配置文件来完成。Spring Boot 使得使用配置文件非常简单。

d5f97212362e3a4abf977f93c908cab0.png

Q:依赖注入有什么优势?

依赖注入之所以更流行是因为它是一种更可取的方式:让容器全权负责依赖查询,受管组件只需要暴露JavaBean的setter方法或者带参数的构造器或者接口,使容器可以在初始化时组装对象的依赖关系。其与依赖查找方式相比,主要优势为:

1、查找定位操作与应用代码完全无关。

2、不依赖于容器的API,可以很容易地在任何容器以外使用应用对象。

3、不需要特殊的接口,绝大多数对象可以做到完全不必依赖容器。

89c5bdff7aad14c6633f2ed0fb7fd146.png

Q:@Component, @Controller, @Repository, @Service 有何区别?

1、@Component:这将 java 类标记为 bean。它是任何 Spring 管理组件的通用构造型。spring 的组件扫描机制现在可以将其拾取并将其拉入应用程序环境中。

2、@Controller:这将一个类标记为 Spring Web MVC 控制器。标有它的 Bean 会自动导入到 IoC 容器中。

3、@Service:此注解是组件注解的特化。它不会对 @Component 注解提供任何其他行为。您可以在服务层类中使用 @Service 而不是 @Component,因为它以更好的方式指定了意图。

4、@Repository:这个注解是具有类似用途和功能的 @Component 注解的特化。它为 DAO 提供了额外的好处。它将 DAO 导入 IoC 容器,并使未经检查的异常有资格转换为 Spring DataAccessException。

13d988090e5daf14c9a8017f7bc1bf45.png

Q:@Qualifier 注解有什么作用?

当您创建多个相同类型的 bean 并希望仅使用属性装配其中一个 bean 时,您可以使用@Qualifier 注解和 @Autowired 通过指定应该装配哪个确切的 bean 来消除歧义。

13384edea24e24f3e02045342bd2e419.png

Q:Spring通知有哪些类型?

在AOP术语中,切面的工作被称为通知,实际上是程序执行时要通过SpringAOP框架触发的代码段。

Spring切面可以应用5种类型的通知:

1、前置通知(Before):在目标方法被调用之前调用通知功能;

2、后置通知(After):在目标方法完成之后调用通知,此时不会关心方法的输出是什么;

3、 返回通知(After-returning ):在目标方法成功执行之后调用通知;

4、异常通知(After-throwing):在目标方法抛出异常后调用通知;

5、环绕通知(Around):通知包裹了被通知的方法,在被通知的方法调用之前和调用之后执行自定义的行为。

58d89c05b4809a589ca65ff2be239d91.png

往期推荐

Ribbon负载均衡原理流程,负载均衡策略及策略修改,建议饥饿加载开启。

springboot工程使用docker部署到阿里云服务器(保姆级教程)

利用Springboot自动配置原理,自定义一个基础Starter。

部署私有IPFS网络,实现节点互通

Javamail实现邮件发送功能

10分钟学会使用Java8新特性---StreamAPI

一文搞懂Java设计模式的责任链模式,从理解到案例实践

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值