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

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

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

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

如上图所示,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依赖

 <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.lch</groupId>
<artifactId>springboot01</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>springboot01</name>
<description>Demo project for Spring Boot</description> <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>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- web项目,添加web依赖 -->
<dependency>
40 <groupId>org.springframework.boot</groupId>
41 <artifactId>spring-boot-starter-web</artifactId>
42 </dependency>

</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>

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

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

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

5.编写自己的controller (在domain包下新建一个User 类的Javabean)

 package com.lch.springboot01.domain;

 public class User {
private String userName;
private String passWord; public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public String getPassWord() {
return passWord;
} public void setPassWord(String passWord) {
this.passWord = passWord;
}
}
 package com.lch.springboot01.controller;

 import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import com.lch.springboot01.domain.User; @RestController
public class HelloController {
@RequestMapping("/hello")
public String index() {
return "hello world";
} @RequestMapping("/getUser") //测试返回json字符串
public User getUser() {
User user = new User();
user.setUserName("小明");
user.setPassWord("123");
return user;
} } 

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

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

7.在浏览器输入http://localhost:8080/hello 进行访问,可以看到页面输出 hello world 。

接着在浏览器输入  http://localhost:8080/getUser 进行访问,可以看到页面输出json字符串格式的user对象。至此,一个springboot入门例子就完成了

按F12打开浏览器的调试界面,F5刷新,再次访问,点击Headers,可以看到这次请求默认是get请求,响应是json格式并且字符编码为UTF-8

切换到response 界面,可以看到本次请求的原始响应信息,这在开发过程中调试代码会有帮助

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

 (1)入口类和 @SpringBoopplication 注解
Sping Boot通常有一个名为pplication的入口类,入口类里有一个 main方法,这个main方法,其实就是一个标准的Java应用的入口方法。在main方法中使用SpringApplication.nun( Springboot01Application, args) ,启动Spring Boot应用项目。
@SpringBoopplication是Spring Boot的核心注解,它是一个组合注解(顺便说一下,注解最大的用处就是反射调用!!!),源码如下:

 @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) })
public @interface SpringBootApplication { @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建议的包目录结构,如下图:

(2)@RestController 注解的作用是,让Controller中的方法都以json的格式返回给 请求发起者

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

示例代码下载地址

https://github.com/liuch0228/springboot.git

springBoot01-helloworld-完成一个简单的RESTful API的更多相关文章

  1. 基础项目构建,引入web模块,完成一个简单的RESTful API 转载来自翟永超

    简介 在您第一次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复粘贴的配置有一些厌烦?那么您就不妨来试试使用Spring Boot ...

  2. laravel 实现一个简单的 RESTful API

    创建一个 Article 资源 php artisan make:resource Article 你可以在 app/Http/Resources 目录下看到你刚刚生成的 Article 资源 当然我 ...

  3. Java框架spring Boot学习笔记(九):一个简单的RESTful API

    RESTful API设计需求如下: User.java package com.springboot.test; public class User { private Long id; priva ...

  4. 一、基础项目构建,引入web模块,完成一个简单的RESTful API

    一.Spring Boot的主要优点: 为所有Spring开发者更快的入门 开箱即用,提供各种默认配置来简化项目配置 内嵌式容器简化Web项目 没有冗余代码生成和XML配置的要求 二.使用maven构 ...

  5. 使用webpy创建一个简单的restful风格的webservice应用

    下载:wget http://webpy.org/static/web.py-0.38.tar.gz解压并进入web.py-0.38文件夹安装:easy_install web.py 这是一个如何使用 ...

  6. 使用springboot实现一个简单的restful crud——01、项目简介以及创建项目

    前言 之前一段时间学习了一些springboot的一些基础使用方法和敲了一些例子,是时候写一个简单的crud来将之前学的东西做一个整合了 -- 一个员工列表的增删改查. 使用 restful api ...

  7. 简单说说Restful API

    前言: 最近一段时间,一直在低头敲代码,开发平台对外交互的API接口,功能已经大体完成了,回过头来看看自己的接口设计文档,不胜感慨,想当初自己也是为"接口名称"想破了脑袋,各种百度 ...

  8. 使用springboot实现一个简单的restful crud——03、前端页面、管理员登陆(注销)功能

    前言 这一篇我们就先引入前端页面和相关的静态资源,再做一下管理员的登陆和注销的功能,为后续在页面上操作数据做一个基础. 前端页面 前端的页面是我从网上找的一个基于Bootstrap 的dashboar ...

  9. 《Web Development with Go》实现一个简单的rest api

    设计模式完了之后,应该实现具体的应用了. 设计模式还得没事就要复习. web应用,学习的是网上的一本书. <Web Development with Go> package main im ...

随机推荐

  1. Linux学习篇(二)-软件包管理器、Yum 软件仓库

    红帽软件包管理器 在红帽软件包管理器(rpm)公布之前,Linux 系统软件的安装只能采取"源码包"的方式安装,需要自行编译源码并解决许多依赖关系,所以软件的安装.升级.卸载的难度 ...

  2. Windows 下开启FTP服务并创建FTP用户

    Windows 下开启FTP服务,并创建用户 此教程教你怎么开启 Windows 的 FTP 服务,并创建用于登入 FTP 的用户.教程用到的操作系统是 Windows 7. 一.创建用于登入 FTP ...

  3. Skyline(6.x)-Web二次开发-多窗口对比

    GitHub 上获取源码 1. 打开个 3D 窗口 一个页面加载多个 TerraExplorer3DWindow 和 SGWorld 等只有第一个能用(即使用 iframe 也是一样) 所以我决定打开 ...

  4. React Hooks简单业务场景实战(非源码解读)

    前言 React Hooks 是React 16.7.0-alpha 版本推出的新特性.从 16.8.0 开始,React更稳定的支持了这一新特性. 它可以让你在不编写 class 的情况下使用 st ...

  5. 16/8/23-jQuery子调用匿名函数

    通过创建一个自调用匿名函数,创建一个特殊的函数作用域,该作用域中的代码不会和已有的同名函数.方法和变量以及第三方库冲突. 自调用匿名函数写法 方法一: (function(){ //... })(); ...

  6. hihoCoder 1014 : Trie树(字典树)

    传送门 Description 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进. 这一天,他们遇到了一本词典,于是小Hi就向小 ...

  7. css负边距布局

    三行三列的布局 代码结构 <div class="container"> <ul> <li>1</li> <li>2&l ...

  8. vim插件管理器:Vundle的介绍及安装(很全)(转载)

    转载自:https://blog.csdn.net/zhangpower1993/article/details/52184581 背景 Vim缺乏默认的插件管理器,所有插件的文件都散布在~/.vim ...

  9. #python# error:urllib.error.URLError: <urlopen error [Errno 11001] getaddrinfo failed>

    设置代理后访问网页报错,百度有人说地址拼写不对,确认拼写后依然报错 因为使用的是xici免费代理,想到可能代理不可用造成getaddrinfo failed, 更换其他代理,error消失

  10. Java-技术专区-设计模式-reactor模式

    模型:         反应器模式做法是:汽车是乘客访问的主体(Reactor),乘客上车后,到售票员(acceptor)处登记,之后乘客便可以休息睡觉去了,当到达乘客所要到达的目的地后,售票员将其唤 ...