创建一个基于Spring Boot Restful 应用

说明:

        今天先回顾一下Spring Boot ,准备写了该系列的开山文章,也就是基于Spring Boot 搭建一个Restful 应用    :)博主使用的是Idea版的,Eclipse 版的大家可以在网上自寻创建方式哈(其实你们完全可以使用Idea嘛,用的很爽!!!) =……=!

        1:打开Idea,选择第一项,创建一个新的项目,你可自行选择(Gradle,Maven,Java -》卤煮称其为标配),楼主 选择的是Gradle版本,同理如果大家想看其它版本的,可以在百度搜索其它版本

创建工程:

    选择Gradle项目后,点击Next进入填写工程信息界面,也就是填写包名啊,项目名称的地方,再点击下一步需注意的事:Gradle最好使用本地选项,最好不要用Idea自带的。

GroupId->在这你该填写你项目的包名
Artifactid->这里上面占用了,所以这里只填写你的项目名称 
Version->自然是版本号了

build.gradle

group 'com.springboot'
version '1.0-SNAPSHOT'

apply plugin: 'java'

sourceCompatibility = 1.8

repositories {
    jcenter()
}

dependencies {
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.0.0.RELEASE' //核心依赖包  
}

正文:

        首先创建一个用户模型,用作与前端交互的对象

package com.springboot.user.model;

/**
 * @author Kevin.xu
 * @date 2018/3/18/19:44
 * @description :用户实体
 */
public class User {
    //用户名称
    private String userName;
    //用户性别
    private String userSex;
    //用户电话
    private String phone;

    public User() {
    }

    public User(String userName) {
        this.userName = userName;
    }

    public String getUserName() {
        return userName;
    }

    public User setUserName(String userName) {
        this.userName = userName;
        return this;
    }

    public String getUserSex() {
        return userSex;
    }

    public User setUserSex(String userSex) {
        this.userSex = userSex;
        return this;
    }

    public String getPhone() {
        return phone;
    }

    public User setPhone(String phone) {
        this.phone = phone;
        return this;
    }

    @Override
    public String toString() {
        return "User{" +
                "userName='" + userName + '\'' +
                ", userSex='" + userSex + '\'' +
                ", phone='" + phone + '\'' +
                '}';
    }


}

        用户模型创建完后创建UserController,这里我们暂时只提供简单的CURD操作,当然后续文章会涉及到真正的应用开发,读者可持续关注卤煮写的文章     

@RestController 表示这是一个Restful的Controller
@PostMapping、PutMapping、GetMapping、DeleteMapping   对应着新增,修改,查询,删除操作,从而避免了,我们在URL定义增、删、改、查(如:/user/delete |  /user/add)
@PathVariable 表示这里有个路径参数,对应注解 @PutMapping("/{userName}")中的"/{userName}" ,俩个存在是相互依赖的,缺一不可,如果多个就使用多个进行获取
package com.springboot.user.web.controller;

import com.springboot.user.model.User;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author Kevin.xu
 * @date 2018/3/18/19:37
 * @description :用户Controller
 */
@RestController()
@RequestMapping(value = UserController.USER_URL)
public class UserController {
    protected static final String USER_URL = "/user";
    private static Map <String, User> addUser = new HashMap <>();

    /**
     * 新增用户
     * @param user
     * @return
     */
    @PostMapping()
    public User addUser(@RequestBody User user) {
        addUser.put(user.getUserName(), user);
        return user;
    }

    /**
     * 修改用户
     * @param userName
     * @param user
     * @return
     */
    @PutMapping("/{userName}")
    public User updateUser(@PathVariable String userName, @RequestBody User user) {
        if (addUser.get(userName) != null) {
            addUser.put(userName, user);
        }
        return user;
    }

    /**
     * 通过用户名获取用户信息
     * @param userName
     * @return
     */
    @GetMapping("/{userName}")
    public User getUser(@PathVariable String userName) {
        return addUser.get(userName);
    }

    /**
     * 获取用户列表
     * @return
     */
    @GetMapping
    public List <User> getUsers() {
        return getUsersByMap();
    }

    /**
     * 根据用户名称删除用户
     * @param userName
     * @return
     */
    @DeleteMapping("/{userName}")
    public List <User> deleteUserByUserName(@PathVariable String userName) {
        addUser.remove(userName);
        return getUsersByMap();

    }

    /**
     * 从map中获取所有用户
     *
     * @return
     */
    private List <User> getUsersByMap() {
        List <User> users = new ArrayList <>();
        for (Map.Entry <String, User> user : addUser.entrySet()) {
            users.add(user.getValue());
        }
        return users;
    }


}

        Spring Boot采用注解模式,而并非之前的Spring 所采用的XML模式,所带来的好处,就是没有那么多的配置文件,当然我们都知道事物总有俩面性,它给我们带来开发上的效率,同样也给我们带来了,不整洁的代码,采用过多注解,会对整个项目带来不必要的研究成本。

@SpringBootApplication 该注解是Spring Boot 启动注解,用作程序的主入口标识,只能使用在main方法的类上,也就是说,有它还得有main
new SpringApplication(ApplicationStart.class).run(args).start(); 这句话是正式启动的语句,通过分析得出获取当前类上的注解,启动Spring Boot。
.run(args)这句话很好理解,Spring Boot 可以启动时设置一些参数,我们可以通过语句形式将参数加入进来。
package com.springboot.user;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author Kevin.xu
 * @date 2018/3/18/19:38
 * @description :程序入口
 */
@SpringBootApplication
public class ApplicationStart {
    public static void main(String[] args) {
        new SpringApplication(ApplicationStart.class).run(args).start();
    }
}

总结:

        通过上面小例子,我们可以看出Spring Boot 给我们开发带来了很方便的方式搭建应用,大大提高了我们开发的效率,所以以后项目采用Spring Boot 是一大趋势,博主建议大家,多研究研究Spring Boot,毕竟Spring Boot背后可还有一个Spring Cloud,目前国内Java行情来看,Spring Cloud已经慢慢比Dubbo的需求量高,人才储备较少。

        另外博主第一次以日常笔记形式,记录学习的点点滴滴分享给大家,如果有些地方说的不对,欢迎大家来指正,后续博主将会用其它框架集成与Spring Boot,并慢慢以项目形式进行例子开发讲解,欢迎大家持续关注。





                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值