原文: https://howtodoinjava.com/spring-boot/spring-boot-tutorial-with-hello-world-example/

Spring boot 是 spring 框架的开发人员开发的子项目 – 用最小的配置创建独立的生产级应用程序。 Spring Boot 应用程序通常打包为胖/超级 jar 文件,并且可以作为简单的 jar 文件部署在任何平台上。 这就是为什么 Spring Boot 应用程序是在 Java 中构建微服务的最佳选择的原因。

让我们从 Eclipse 中的 spring boot hello world 示例开始逐步学习。

1. 创建 spring boot hello world 项目模板

要为 spring boot 应用程序创建模板,我建议使用 http://start.spring.io/。 在这里,您可以选择当前考虑的所有依赖关系,并生成项目。

Spring Boot Hello World 示例 – Spring Boot REST 示例 - 图1

Spring Boot 选项

我选择了 JerseySpring Web,Spring HATEOAS,Spring JPA 和 Spring Security 等相关性。您可以在下载并导入项目后或将来出现需求时添加更多依赖项。

Generate Project按钮将生成一个.zip文件。 下载文件并将其解压缩到您的工作区中。

2. 导入 spring boot 项目到 eclipse

下一步是将生成的项目导入到 IDE 中。 我为此使用了 eclipse。

1)将 spring boot 项目导入为现有的 maven 项目。

Spring Boot Hello World 示例 – Spring Boot REST 示例 - 图2

将现有 Maven 项目导入 Eclipse

2)选择pom.xml文件将其导入。

Spring Boot Hello World 示例 – Spring Boot REST 示例 - 图3

选择pom.xml文件来导入 Maven 项目

3)将导入项目,并且在生成 zip 文件时添加的依赖项将自动下载并添加到classpath中。

Spring Boot Hello World 示例 – Spring Boot REST 示例 - 图4

导入的 Spring Boot 项目结构

您现在已经成功导入了 spring boot 应用程序。 现在,让我们看看它已经为您配置了什么。

3. Spring Boot 自动配置

使用 Spring Boot 时,好事是您添加了一个依赖项(例如 Spring security)时,它会做出合理的假设并自动为您配置一些默认值。 因此,您可以立即开始。

Spring Boot 通过扫描类路径中可用的依赖库来使用约定而非配置。 对于 POM 文件中的每个spring-boot-starter-*依赖项,Spring Boot 都会执行一个默认的AutoConfiguration类。 AutoConfiguration类使用*AutoConfiguration词汇模式,其中*代表库。 例如,SpringSecurity 的自动配置是通过SecurityAutoConfiguration完成的。

同时,如果您不想对任何项目都使用自动配置,则此操作非常简单。 只需使用如下所示的exclude = SecurityAutoConfiguration.class

  1. @SpringBootApplication (exclude = SecurityAutoConfiguration.class)
  2. public class SpringBootDemoApplication {
  3. public static void main(String[] args)
  4. {
  5. SpringApplication.run(SpringBootDemoApplication.class, args);
  6. }
  7. }

也可以使用src/main/resources文件夹中的application.properties文件覆盖默认配置值。

4. Spring Boot 注解

现在查看@SpringBootApplication注解的实际作用。

4.1. @SpringBootApplication注解

SpringBootApplication定义如下:

  1. @Target(ElementType.TYPE)
  2. @Retention(RetentionPolicy.RUNTIME)
  3. @Documented
  4. @Inherited
  5. @SpringBootConfiguration
  6. @EnableAutoConfiguration
  7. @ComponentScan(excludeFilters = @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class))
  8. public @interface SpringBootApplication
  9. {
  10. //more code
  11. }

它为应用程序配置目的添加了 3 个重要的注解。

  1. @SpringBootConfiguration
  1. @Configuration
  2. public @interface SpringBootConfiguration
  3. {
  4. //more code
  5. }


该注解将@Configuration注解添加到类中,将该类标记为应用程序上下文的 bean 定义的源

  1. @EnableAutoConfiguration


这告诉 Spring Boot 通过基于类路径设置,其他 bean 和各种属性设置添加 bean,从而根据pom.xml中添加的依赖关系自动配置重要的 bean 定义。

  1. @ComponentScan


该注解告诉 Spring Boot 扫描基本软件包,查找其他 bean /组件并对其进行配置。

5. 如何通过 Spring Boot 验证自动配置的 Bean

如果您想知道在 spring boot hello world 应用程序中已自动配置了所有 bean,请使用此代码并运行它。

SpringBootDemoApplication.java

  1. import java.util.Arrays;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration;
  5. import org.springframework.context.ApplicationContext;
  6. @SpringBootApplication (exclude = SecurityAutoConfiguration.class)
  7. public class SpringBootDemoApplication {
  8. public static void main(String[] args)
  9. {
  10. ApplicationContext ctx = SpringApplication.run(SpringBootDemoApplication.class, args);
  11. String[] beanNames = ctx.getBeanDefinitionNames();
  12. Arrays.sort(beanNames);
  13. for (String beanName : beanNames)
  14. {
  15. System.out.println(beanName);
  16. }
  17. }
  18. }

使用我的pom.xml文件,它将生成以下 bean 名称以及其他许多springframework.boot.autoconfigure依赖项。

Console

  1. simpleControllerHandlerAdapter
  2. sortResolver
  3. spring.datasource-org.springframework.boot.autoconfigure.jdbc.DataSourceProperties
  4. spring.hateoas-org.springframework.boot.autoconfigure.hateoas.HateoasProperties
  5. spring.http.encoding-org.springframework.boot.autoconfigure.web.HttpEncodingProperties
  6. spring.http.multipart-org.springframework.boot.autoconfigure.web.MultipartProperties
  7. spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties
  8. spring.jackson-org.springframework.boot.autoconfigure.jackson.JacksonProperties
  9. spring.jpa-org.springframework.boot.autoconfigure.orm.jpa.JpaProperties
  10. spring.jta-org.springframework.boot.autoconfigure.transaction.jta.JtaProperties
  11. spring.mvc-org.springframework.boot.autoconfigure.web.WebMvcProperties
  12. spring.resources-org.springframework.boot.autoconfigure.web.ResourceProperties
  13. springBootDemoApplication
  14. standardJacksonObjectMapperBuilderCustomizer
  15. stringHttpMessageConverter
  16. tomcatEmbeddedServletContainerFactory
  17. tomcatPoolDataSourceMetadataProvider
  18. transactionAttributeSource
  19. transactionInterceptor
  20. transactionManager
  21. transactionTemplate
  22. viewControllerHandlerMapping
  23. viewResolver
  24. websocketContainerCustomizer

6. Spring Boot REST API 示例

现在是时候将任何功能内置到 hello world 应用程序中了。 您可以根据需要添加功能,我正在添加 REST API

6.1. 创建 REST 控制器

创建一个包com.howtodoinjava.demo.controller,并在其中创建 rest 控制器。

EmployeeController.java

  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.RestController;
  5. import com.howtodoinjava.demo.model.Employee;
  6. @RestController
  7. public class EmployeeController
  8. {
  9. @RequestMapping("/")
  10. public List<Employee> getEmployees()
  11. {
  12. List<Employee> employeesList = new ArrayList<Employee>();
  13. employeesList.add(new Employee(1,"lokesh","gupta","howtodoinjava@gmail.com"));
  14. return employeesList;
  15. }
  16. }

6.2. 建立模型

创建模型类Employee

Employee.java

  1. public class Employee {
  2. public Employee() {
  3. }
  4. public Employee(Integer id, String firstName, String lastName, String email) {
  5. super();
  6. this.id = id;
  7. this.firstName = firstName;
  8. this.lastName = lastName;
  9. this.email = email;
  10. }
  11. private Integer id;
  12. private String firstName;
  13. private String lastName;
  14. private String email;
  15. //getters and setters
  16. @Override
  17. public String toString() {
  18. return "Employee [id=" + id + ", firstName=" + firstName
  19. + ", lastName=" + lastName + ", email=" + email + "]";
  20. }
  21. }

7. Spring Boot Hello World 示例演示

现在,通过运行SpringBootDemoApplication中的main()方法来启动应用程序。 它将在端口8080上启动嵌入式 tomcat 服务器。

由于我们已将演示 REST API URL 配置为根 URL,因此您可以在http;//localhost:8080/本身上对其进行访问。

Spring Boot Hello World 示例 – Spring Boot REST 示例 - 图5

验证 Spring Boot REST API

您将在测试工具或浏览器中收到以下响应。

  1. [{"id":1,"firstName":"lokesh","lastName":"gupta","email":"howtodoinjava@gmail.com"}]

这是 spring boot rest hello world 示例和简单的 rest api 示例的全部内容。

让我问您有关如何使用 Maven 在 Eclipse 中创建 Spring Boot 项目的问题。

学习愉快!

下载源码

资源:

Spring Boot 项目

Spring 初始化器

@SpringBootApplication注解