大家好!今天,我们将从流行的Spring Boot框架中了解最重要的注释之一,该注释已改变了Java开发人员使用Spring编写Java应用程序的方式。在本文中,我将解释@SpringBootApplication的含义及其在简单的Spring Boot应用程序中的用法。我们在Application或Main类中使用@SpringBootApplication批注来启用许多功能,例如,基于Java的Spring配置,组件扫描,尤其是启用Spring Boot的自动配置功能。
如果您已经使用Spring Boot很长时间了,那么您就知道我们需要使用很多注释来对Application类或Main类进行注释,例如:
@Configuration启用基于Java的配置
@ComponentScan启用组件扫描。
@EnableAutoConfiguration启用Spring Boot的自动配置功能。
但是现在您可以通过使用@SpringBootApplication注释Application类来完成所有操作。
顺便说一句,此注释从Spring 1.2开始可用,这意味着,如果您在较低的Spring Boot版本上运行,则如果需要这些功能,则仍需要使用@ Configuration,@ CompnentScan和@EnableAutoConfiguration。
@SpringBootApplication示例
这是一个简单的示例,说明如何使用@SpringBootApplication批注编写Spring Boot应用程序。此代码示例摘自我之前的文章,该文章有关使用Spring使用RESTful Web服务。在此示例中,我们使用了RestTempalte类来使用RESTful Web服务。
package tool;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
public class Hello implements CommandLineRunner {
private static final Logger log = LoggerFactory.getLogger(Hello.class);
public static void main(String args[]) {
SpringApplication.run(Hello.class);
}
@Override
public void run(String...args) throws Exception {
RestTemplate restTemplate = new RestTemplate();
Country country = restTemplate.getForObject("http://www.services.groupkt.com/country/get/iso2code/US", Country.class);
log.info(country.toString());
}
}
Main类在Spring Boot应用程序中有两个用途:configuration和bootstrapping。首先,它是主要的Spring配置类,其次,它启用了Spring Boot应用程序的自动配置功能。
如果您想了解更多有关基本Spring Boot功能的信息,例如自动配置和Starter依赖项,那么Spring Boot Essentials是快速学习它们的好地方。
@SpringBootApplication = @配置+ @ComponentScan + @EnableAutoConfiguration
@SpringBootApplication批注是以下三个Spring批注的组合,并且仅用一行代码即可提供全部三个功能。
@组态
此注释将一个类标记为基于Java的配置的Configuration类。如果您更喜欢基于Java的配置而不是XML配置,那么这尤其重要。
@ComponentScan
该注释启用了组件扫描,因此将自动发现Web控制器类和您创建的其他组件,并将其注册为Spring的Application Context中的bean。您编写的所有@Controller类都可以通过此注释发现。
@EnableAutoConfiguration
该注释启用了Spring Boot的神奇自动配置功能,该功能可以自动为您配置很多东西。
例如,如果您正在编写Spring MVC应用程序,并且在应用程序类路径上具有Thymeleaf JAR文件,则Spring Boot自动配置可以自动自动配置Thymeleaf模板解析器,视图解析器和其他设置。
因此,可以说@SpringBootApplication是3合1批注,结合了@ Configuration,@ ComponentScan和@EnableAutoConfiguration的功能。
它还将该类标记为BootStrap类,这意味着您可以将其作为普通Java类运行,例如,通过从命令提示符处运行其JAR文件(如此处所示),或右键单击并将其作为Eclipse中的Java程序运行IDE。
这将启动Spring Boot随附的嵌入式服务器,并在其中运行您的Web应用程序。一旦看到日志且没有任何错误,就可以转到浏览器并使用服务器端口打开localhost来访问您的Spring Boot应用程序。
这就是@SpringBootApplication批注和一个演示如何使用它的简单应用程序。就像我说的那样,这个漂亮的小注解包含了很多麻烦。您只需编写这一行代码即可启用基于Java的配置,组件扫描以及启用Spring Boot的自动配置功能。它使您的代码更具可读性。