Spring Boot 之 Rest API入门示例

Spring BootSpring框架的开发人员开发的子项目,以最小的配置创建独立的生产级应用程序。Spring Boot应用程序通常捆绑为fat / uber jar文件,并且可以作为简单的jar文件部署在任何平台上。这就是为什么Spring Boot应用程序是在Java中构建微服务的理想选择。

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

目录1.创建spring boot hello world项目模板2.将spring boot项目导入eclipse 3. Spring boot自动配置4. Spring boot注解5.如何通过spring boot验证自动配置的bean 6. Spring boot REST API示例7.演示

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

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

Spring Boot选项

我选择了JerseySpring 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通过扫描类路径中可用的依赖库来使用约定而非配置。对于spring-boot-starter-*POM文件中的每个依赖关系,Spring Boot执行一个默认AutoConfiguration类。AutoConfiguration类使用*AutoConfiguration词法模式,其中*表示库。例如,spring安全性的自动配置是通过完成的SecurityAutoConfiguration。

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

@SpringBootApplication (exclude = SecurityAutoConfiguration.class)

public class SpringBootDemoApplication {

   public static void main(String[] args)

   {

      SpringApplication.run(SpringBootDemoApplication.class, args);

   }

}

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

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个重要的注解。

@SpringBootConfiguration

@Configuration

public @interface SpringBootConfiguration

{

   //more code

}

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

@EnableAutoConfiguration

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

@ComponentScan

该注解告诉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依赖项。

安慰

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.how2codex.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.how2codex.demo.model.Employee;

@RestController

public class EmployeeController

{

   @RequestMapping("/")

    public List<Employee> getEmployees()

    {

      List 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示例演示

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

由于我们已将演示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世界示例以及简单的Rest API示例的全部内容。

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


感谢原博主的序列, 转载 -- http://how2codex.com/spring/spring-boot/3596.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容