最近看到一些不错的英文文章,想分享下。于是想翻译下,顺便自己也再看上一遍
原文链接如下:
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来禁用。