[翻译]关于Spring Boot的十个好问题

最近看到一些不错的英文文章,想分享下。于是想翻译下,顺便自己也再看上一遍
原文链接如下:
SpringBoot文章原文链接

译文

在这篇文章中,我们将会讨论10个有趣的SpringBoot相关的问题。这些问题有些狡猾,但是都是些非常常见的问题。

  • @SpringBootApplication 注解内部做了什么事情?
    在SpringBoot的官方文档中介绍说,@SpringBootApplication相当于同时使用了@Configuration, @EnableAutoConfiguration, 以及@ComponentScan三个注解并配置好了它们的默认属性。SpringBoot能够让开发者使用一个单一的注解来代替多个注解。但是,我们都知道,Spring 松耦合的特性让我们也能单独使用这些注解(@Configuration, @EnableAutoConfiguration, 以及@ComponentScan)在我们的项目中。

  • 怎样在不使用basePackages过滤器的情况下,排除任意包?
    有很多种方法来让你过滤任意包,但是Spring Boot 提供了一种有趣的选项,可以在不进行组件扫描的情况下达到目的。你可以使用exclude 属性,当然要在使用SpringBootApplication的基础上,具体的代码片如下:

@SpringBootApplication(exclude= {Employee.class})
public class FooAppConfiguration {}
  • 如何去禁用一个特定的自动配置类?
    如果你发现有任何自动配置类你不想应用的,你都可以使用@EnableAutoConfiguration的exclude属性来做到,具体的代码片如下:
//By using "exclude"
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})

另一种情况,如果这个类没有再classpath上,那么可以使用注解的excludeName 属性,并且声明出完整的类名。具体的代码片如下:

//By using "excludeName"
@EnableAutoConfiguration(excludeName={Foo.class})

还有一种方式,Spring Boot提供了一种便利的方法去控制自动配置类的列表的排除,这是通过使用spring.autoconfigure.exclude属性来达到的。你能够添加应用属性。你也添加多个类,在这些类之间,使用逗号隔开。具体的代码片如下:

//By using property file
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
  • 什么是Spring执行器?它的优点是什么?
    我们知道,Spring Boot提供了很多自动配置特性来帮助开发者进行快速组件开发。但是如果你想着去调试,如果代码工作不正常,我们总是要去分析日志,并且去追踪我们的数据流以此来检查到底发生了什么。于是,Spring执行器就提供了便利的方法来达到这些特性。它提供了很多特性:什么beans被创建了,controller的映射,CPU usage等等。它能自动搜集这些信息并且应用到你的应用中。

    它提供了很简单的方法来访问REST端点,并且从web上搜集所有的信息。但是使用这些端点,你能够做很多事情,具体可以查看端点的doc文档。没有必要担心安全问题,这些都被Spring的安全机制所保护。或者,我们也可以配置本地安全策略,这需要使用RequestMatcher。

  • 如何启动/禁用执行器?
    启动/禁用执行器是非常简单的;最简单的方法就是在依赖(Maven/Gradle)中添加spring-boot-starter-actuator 启动器。如果你不想使用,那么不要添加依赖就可以了。


<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
  • 什么是Spring初始化?
    Spring Initializer是一个Web应用程序,它可以生成一个Spring Boot项目,其中包含快速启动它所需的一切。一如既往,我们需要一个良好的项目框架,它可以帮助您正确地创建项目结构/骨架。

  • 什么是执行器的关闭(shutdown)?
    Shutdown是一个允许应用程序正常关闭的端点。默认情况下不启用此功能。您可以在application.properties文件中使用management.endpoint.shutdown.enabled = true来启用此功能。但是如果你使用它,请小心使用。

  • 在 Spring boot中改变嵌入式tomcat服务器的端口是可能的吗?
    是的,可以更改端口。您可以使用application.properties文件来更改端口。但是你需要提到“server.port”(即server.port = 8081)。确保项目类路径中有application.properties;REST Spring框架将负责其余部分。如果你提到server.port = 0,它会自动分配任何可用的端口。

  • 我们可以在Spring Boot中覆盖或替换嵌入式Tomcat服务器吗?
    的,我们可以使用启动器依赖项将Embedded Tomcat替换为任何其他服务器。您可以根据需要使用spring-boot-starter-jetty或spring-boot-starter-undertow作为每个项目的依赖项。

  • 我们可以在Spring Boot应用程序中禁用默认Web服务器吗?

    Spring的主要优点是提供灵活性来构建松散耦合的应用程序。Spring提供了在快速配置中禁用Web服务器的功能。是的,我们可以使用application.properties来配置Web应用程序类型,那么开始使用spring.main.web-application-type = none来禁用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值