美文网首页Spring Boot
创建一个基于Spring Boot Restful 应用

创建一个基于Spring Boot Restful 应用

作者: two昔年 | 来源:发表于2018-03-18 21:32 被阅读94次

    说明:

          今天先回顾一下Spring Boot ,准备写了该系列的开山文章,也就是基于Spring Boot 搭建一个Restful 应用 :)博主使用的是Idea版的,Eclipse 版的大家可以在网上自寻创建方式哈(其实你们完全可以使用Idea嘛,用的很爽!!!) =……=!
          1:打开Idea,选择第一项,创建一个新的项目,你可自行选择(Gradle,Maven,Java -》卤煮称其为标配),楼主 选择的是Gradle版本,同理如果大家想看其它版本的,可以在百度搜索其它版本

    创建工程:

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

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

    2018-03-18_192136.png

    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}") ,俩个存在是相互依赖的,缺一不可,如果多个就使用多个进行获取

    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,并慢慢以项目形式进行例子开发讲解,欢迎大家持续关注。

    相关文章

      网友评论

        本文标题:创建一个基于Spring Boot Restful 应用

        本文链接:https://www.haomeiwen.com/subject/oswsqftx.html