springBoot01-helloworld-完成一个简单的RESTful API

1、访问http://start.spring.io/

2、选择构建工具Maven Project、Spring Boot版本 2.0.1,以及一些工程基本信息 ,最后点击Generate Project生成项目

springBoot01-helloworld-完成一个简单的RESTful API

3.下载后解压,导入maven项目:

springBoot01-helloworld-完成一个简单的RESTful APIspringBoot01-helloworld-完成一个简单的RESTful API

项目结构如下(controller是后加的):需要注意的是,自己新建的包,必须是项目入口类Springboot01Application 所在包的里面!

springBoot01-helloworld-完成一个简单的RESTful API

如上图所示,Spring Boot的基础结构共三个文件:

  • src/main/java 程序开发以及主程序入口
  • src/main/resources 配置文件
  • src/test/java 测试程序

另外,spingboot建议的目录结果如下: 假设root package结构为:com.example.myproject ,那么包和类的层级关系按照如下约定来建立!这一点很重要,否则你的应用可能起不来!

com
  +- example
    +- myproject
      +- Application.java
      |
      +- domain
      |  +- Customer.java
      |  +- CustomerRepository.java
      |
      +- service
      |  +- CustomerService.java
      |
      +- controller
      |  +- CustomerController.java
      |
  • 1、Application.java 建议放到根目录下面,主要用于做一些框架配置
  • 2、domain目录主要用于实体(Entity)与数据访问层(Repository)
  • 3、service 层主要是业务类代码
  • 4、controller 负责页面访问控制

采用默认配置可以省去很多配置,当然也可以根据自己的喜欢来进行更改
4. 由于是web应用,在pom文件中 添加web依赖

1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 4     <modelVersion>4.0.0</modelVersion>
 5 
 6     <groupId>com.lch</groupId>
 7     <artifactId>springboot01</artifactId>
 8     <version>0.0.1-SNAPSHOT</version>
 9     <packaging>jar</packaging>
10 
11     <name>springboot01</name>
12     <description>Demo project for Spring Boot</description>
13 
14    <strong> <parent>
15         <groupId>org.springframework.boot</groupId>
16         <artifactId>spring-boot-starter-parent</artifactId>
17         <version>2.0.1.RELEASE</version>
18         <relativePath/> <!-- lookup parent from repository -->
19     </parent></strong>
20 
21     <properties>
22         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
23         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
24         <java.version>1.8</java.version>
25     </properties>
26 
27     <dependencies>
28         <dependency>
29             <groupId>org.springframework.boot</groupId>
30             <artifactId><strong>spring-boot-starter</strong></artifactId>
31         </dependency>
32 
33         <dependency>
34             <groupId>org.springframework.boot</groupId>
35             <artifactId><strong>spring-boot-starter-test</strong></artifactId>
36             <scope>test</scope>
37         </dependency>
38        <strong> <!-- web项目,添加web依赖 --></strong>
39         <strong><dependency>
40             <groupId>org.springframework.boot</groupId>
41             <artifactId>spring-boot-starter-web</artifactId>
42         </dependency></strong>
43     </dependencies>
44 
45     <build>
46         <plugins>
47             <plugin>
48                 <groupId>org.springframework.boot</groupId>
49                 <artifactId>spring-boot-maven-plugin</artifactId>
50             </plugin>
51         </plugins>
52     </build>
53 
54 
55 </project>

当前的pom.xml内容如下,仅引入了两个模块:然后手动添加web的依赖

  • spring-boot-starter:核心模块,包括自动配置支持、日志和YAML
  • spring-boot-starter-test:测试模块,包括JUnit、Hamcrest、Mockito

需要注意的是pom文件中的parent元素,里边定义了版本号,所以pom文件里dependency 依赖都可以不用写版本号,这个parent 的作用就是规定了要使用的jar包的版本编号

5.编写自己的controller

package com.lch.springboot01.controller;
 
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
<strong> @RestController
</strong> public class HelloController {
    <strong> @RequestMapping("/hello")
</strong>     public String index() {
         return "hello world";
     }
 
 }

6. 切换到Springboot01Application 类下面,直接点击运行,可以看到控制台上打印了springboot的图案(注意,只有Springboot01Application 这个类才是入口类,不能在其他类下面启动项目,会报错)

springBoot01-helloworld-完成一个简单的RESTful API

启动完成后,可以看到所使用的容器,端口号,以及上下文路径 context path

springBoot01-helloworld-完成一个简单的RESTful API

7.在浏览器输入http://localhost:8080/hello 进行访问,可以看到页面输出 hello world 。至此,一个springboot入门例子就完成了

springBoot01-helloworld-完成一个简单的RESTful API

8.上面小例子用到的注解说明

(1)入口类和@SpringBoopplication 注解
SpingBoot通常有一个名为pplication的入口类,入口类里有一个main方法,这个main方法,其实就是一个标准的Java应用的入口方法。在main方法中使用SpringApplication.nun( Springboot01Application,args),启动SpringBoot应用项目。
@SpringBoopplication是SpringBoot的核心注解,它是一个组合注解(顺便说一下,注解最大的用处就是反射调用!!!),源码如下:
@Target(ElementType.TYPE)
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
 @Inherited
 @SpringBootConfiguration
 @EnableAutoConfiguration
 @ComponentScan(excludeFilters = {
         @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
         @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
 <strong>public @interface</strong><strong> SpringBootApplication</strong> {
 
     @AliasFor(annotation = EnableAutoConfiguration.class)
     Class<?>[] exclude() default {};
 
 
     @AliasFor(annotation = EnableAutoConfiguration.class)
     String[] excludeName() default {};
 
 
     @AliasFor(annotation = ComponentScan.class, attribute = "basePackages")
     String[] scanBasePackages() default {};
 
     @AliasFor(annotation = ComponentScan.class, attribute = "basePackageClasses")
     Class<?>[] scanBasePackageClasses() default {};
 
 }

注意,黄底标注部分,就是这个注解的定义:public @interface SpringBootApplication ,把@去掉,就是接口,写成@interface,就是注解的定义

如果不想使用@SpringBootApplication 注解,可以直接在入口类上使用@Configuratoin 、@EnableAutoConfiguration 、@ComponentScan 注解。其中@EnableAutoConfiguration 让Springboot根据类路径中的jar包依赖为当前项目进行自动配置。例如,添加了spring-boot-starter-web 依赖,会自动添加Tomcat 和SpingMVC的依赖,那么springboot会对Tomcat和SpringMVC进行自动配置。

springboot会自动扫描@SpringBootApplication 所在类的同级的包以及下级包里面的Bean,这一点很重要( 若为JPA项目,还可以扫描标注@Entity 的实体类,建议入口类放置的位置在groupId+ariifactID组合的包名下。) 因此,自己所写的代码,应放置在 跟 Springboot01Application 这个启动类平级的包里面!即按照上面第3步中spirngboot建议的包目录结构,如下图:

springBoot01-helloworld-完成一个简单的RESTful API

(2)@RestController

spring boot 使用@RestController 来返回json格式的数据给前端页面。@RestController 就等价于Spring MVC中的 @RequestMapping 注解和 @ResponseBody 同时标注

把helloController进行如下修改:

@Controller
 public class HelloController {
     @RequestMapping("/hello")
     @ResponseBody
     public String index() {
         return "hello world" + "用springMVC方式返回json数据";
     }
 
 }

再次访问如下:

springBoot01-helloworld-完成一个简单的RESTful API

相关推荐