原文: 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 选项
我选择了 Jersey,Spring Web,Spring HATEOAS,Spring JPA 和 Spring Security 等相关性。您可以在下载并导入项目后或将来出现需求时添加更多依赖项。
Generate Project
按钮将生成一个.zip
文件。 下载文件并将其解压缩到您的工作区中。
2. 导入 spring boot 项目到 eclipse
下一步是将生成的项目导入到 IDE 中。 我为此使用了 eclipse。
1)将 spring boot 项目导入为现有的 maven 项目。
将现有 Maven 项目导入 Eclipse
2)选择pom.xml
文件将其导入。
选择pom.xml
文件来导入 Maven 项目
3)将导入项目,并且在生成 zip 文件时添加的依赖项将自动下载并添加到classpath
中。
导入的 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
。
@SpringBootApplication (exclude = SecurityAutoConfiguration.class)
public class SpringBootDemoApplication {
public static void main(String[] args)
{
SpringApplication.run(SpringBootDemoApplication.class, args);
}
}
也可以使用src/main/resources
文件夹中的application.properties
文件覆盖默认配置值。
4. Spring Boot 注解
现在查看@SpringBootApplication
注解的实际作用。
4.1. @SpringBootApplication
注解
SpringBootApplication
定义如下:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class))
public @interface SpringBootApplication
{
//more code
}
它为应用程序配置目的添加了 3 个重要的注解。
@Configuration
public @interface SpringBootConfiguration
{
//more code
}
该注解将@Configuration
注解添加到类中,将该类标记为应用程序上下文的 bean 定义的源。
这告诉 Spring Boot 通过基于类路径设置,其他 bean 和各种属性设置添加 bean,从而根据pom.xml
中添加的依赖关系自动配置重要的 bean 定义。
该注解告诉 Spring Boot 扫描基本软件包,查找其他 bean /组件并对其进行配置。
5. 如何通过 Spring Boot 验证自动配置的 Bean
如果您想知道在 spring boot hello world 应用程序中已自动配置了所有 bean,请使用此代码并运行它。
SpringBootDemoApplication.java
import java.util.Arrays;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration;
import org.springframework.context.ApplicationContext;
@SpringBootApplication (exclude = SecurityAutoConfiguration.class)
public class SpringBootDemoApplication {
public static void main(String[] args)
{
ApplicationContext ctx = SpringApplication.run(SpringBootDemoApplication.class, args);
String[] beanNames = ctx.getBeanDefinitionNames();
Arrays.sort(beanNames);
for (String beanName : beanNames)
{
System.out.println(beanName);
}
}
}
使用我的pom.xml
文件,它将生成以下 bean 名称以及其他许多springframework.boot.autoconfigure
依赖项。
Console
simpleControllerHandlerAdapter
sortResolver
spring.datasource-org.springframework.boot.autoconfigure.jdbc.DataSourceProperties
spring.hateoas-org.springframework.boot.autoconfigure.hateoas.HateoasProperties
spring.http.encoding-org.springframework.boot.autoconfigure.web.HttpEncodingProperties
spring.http.multipart-org.springframework.boot.autoconfigure.web.MultipartProperties
spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties
spring.jackson-org.springframework.boot.autoconfigure.jackson.JacksonProperties
spring.jpa-org.springframework.boot.autoconfigure.orm.jpa.JpaProperties
spring.jta-org.springframework.boot.autoconfigure.transaction.jta.JtaProperties
spring.mvc-org.springframework.boot.autoconfigure.web.WebMvcProperties
spring.resources-org.springframework.boot.autoconfigure.web.ResourceProperties
springBootDemoApplication
standardJacksonObjectMapperBuilderCustomizer
stringHttpMessageConverter
tomcatEmbeddedServletContainerFactory
tomcatPoolDataSourceMetadataProvider
transactionAttributeSource
transactionInterceptor
transactionManager
transactionTemplate
viewControllerHandlerMapping
viewResolver
websocketContainerCustomizer
6. Spring Boot REST API 示例
现在是时候将任何功能内置到 hello world 应用程序中了。 您可以根据需要添加功能,我正在添加 REST API 。
6.1. 创建 REST 控制器
创建一个包com.howtodoinjava.demo.controller
,并在其中创建 rest 控制器。
EmployeeController.java
import java.util.ArrayList;
import java.util.List;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.howtodoinjava.demo.model.Employee;
@RestController
public class EmployeeController
{
@RequestMapping("/")
public List<Employee> getEmployees()
{
List<Employee> employeesList = new ArrayList<Employee>();
employeesList.add(new Employee(1,"lokesh","gupta","howtodoinjava@gmail.com"));
return employeesList;
}
}
6.2. 建立模型
创建模型类Employee
。
Employee.java
public class Employee {
public Employee() {
}
public Employee(Integer id, String firstName, String lastName, String email) {
super();
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
}
private Integer id;
private String firstName;
private String lastName;
private String email;
//getters and setters
@Override
public String toString() {
return "Employee [id=" + id + ", firstName=" + firstName
+ ", lastName=" + lastName + ", email=" + email + "]";
}
}
7. Spring Boot Hello World 示例演示
现在,通过运行SpringBootDemoApplication
中的main()
方法来启动应用程序。 它将在端口8080
上启动嵌入式 tomcat 服务器。
由于我们已将演示 REST API URL 配置为根 URL,因此您可以在http;//localhost:8080/
本身上对其进行访问。
验证 Spring Boot REST API
您将在测试工具或浏览器中收到以下响应。
[{"id":1,"firstName":"lokesh","lastName":"gupta","email":"howtodoinjava@gmail.com"}]
这是 spring boot rest hello world 示例和简单的 rest api 示例的全部内容。
让我问您有关如何使用 Maven 在 Eclipse 中创建 Spring Boot 项目的问题。
学习愉快!
资源: