SpringBoot入门系列之第一篇:HelloWorld

来源:互联网 发布:淘宝网男女童运动服 编辑:程序博客网 时间:2024/06/06 08:37

springboot快速构建

spring initializr生成项目

  1. 访问http://start.spring.io/ 。SPRING INITIALIZR 生成项目
  2. 定义项目坐标,maven方式构建,springboot版本用1.5.4
    这里写图片描述
  3. 选择具体版本,包名需要注意下,打包方式为jar包,dk版本是1.8,其他的依赖先不管,后面需要在添加。
    这里写图片描述

  4. 点击Generate Project,会自动下载blog.zip压缩包。

  5. 解压缩包到本地如下图,把红框部分删除掉。
    这里写图片描述

  6. 标准maven项目目录
    这里写图片描述

  7. 打开IDE选择Maven工程导入
    这里写图片描述

  8. 运行BlogApplication。 项目shutdown。控制台报错Unregistering JMX-exposed beans on shutdown
    这里写图片描述

  9. 引入web组件

    <dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId></dependency>
  10. 重新运行BlogApplication
    这里写图片描述

  11. 浏览器访问 http://localhost:8080/
    这里写图片描述

springboot其他创建方式

  1. maven创建
    创建一个Project项目

    ``` javascript      mvn archetype:generate -DgroupId=cn.chf -DartifactId=blog -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false```

    mvn archetype:generate    固定格式
    DgroupId        组织标识(包名)
    DartifactId       项目名称
    DarchetypeArtifactId   指定ArchetypeId,maven-archetype-quickstart,创建一个Java Project;maven-archetype-webapp,创建一个Web Project
    DinteractiveMode      是否使用交互模式

  2. IDE构建
    图形化操作,一般都new application
  3. 等等

springboot restful简单访问

  1. 相关依赖

    <dependency>      <groupId>org.springframework.boot</groupId>      <artifactId>spring-boot-starter-web</artifactId>  </dependency>
  2. 创建controller包,包内创建LoginControler.java,处理API请求:

    @(SpringBoot入门系列)RestControllerpublic class LoginController {    String su = "test";    String ps = "pd";    @GetMapping("/")    public String hello() {        return "hello world";    }    @GetMapping("/login")    public String login(@RequestParam("username") String username, @RequestParam("passwd") String passwd) {        if (su.equals(username) && ps.equals(passwd)) {            return "登录成功!";        } else {            return "登录失败!";        }    }}
  3. 访问:http://localhost:8080/login?username=test&passwd=pd
    返回:”登录成功!”

项目简单重构

  1. 返回状态码统一设定

    package cn.chf.blog.enums;public enum ResultEnum {    /**     * 成功     */    SUCCESS("200", "成功"),    /**     * 未知错误     */    UNKONW_ERROR("-1", "未知错误");    private ResultEnum(String code, String message) {        this.code = code;        this.message = message;    }    public String code() {        return code;    }    public String message() {        return message;    }    private String code;    private String message;}
  2. json返回格式统一:Result.java

    package cn.chf.blog.pojo;public class Result<T> {    private String code;    private String message;    private T data;    public String getCode() {        return code;    }    public void setCode(String code) {        this.code = code;    }    public String getMessage() {        return message;    }    public void setMessage(String message) {        this.message = message;    }    public T getData() {        return data;    }    public void setData(T data) {        this.data = data;    }    @Override    public String toString() {        return "Result [code=" + code + ", message=" + message + ", data=" + data + "]";    }}
  3. 同意返回处理:ResultJsonUtil.java

    package cn.chf.blog.utils;import cn.chf.blog.enums.ResultEnum;import cn.chf.blog.pojo.Result;public class ResultJsonUtil {    public static Result<Object> success(Object object){        Result<Object> result = new Result<Object>();        result.setCode(ResultEnum.SUCCESS.code());        result.setMessage(ResultEnum.SUCCESS.message());        result.setData(object);        return result;    }    public static Result success(){        return success(null);    }    public static Result error(String code,String message){        Result result = new Result();        result.setCode(code);        result.setMessage(message);        return result;    }}
  4. 新建service包:增加业务处理类

    package cn.chf.blog.service;import org.springframework.stereotype.Service;import cn.chf.blog.pojo.Result;import cn.chf.blog.utils.ResultJsonUtil;@Servicepublic class LoginService {    String su = "test";    String ps = "pd";    public Result loginIn(String username,String password){        if (su.equals(username) && ps.equals(password)) {            return ResultJsonUtil.success();        } else {            return ResultJsonUtil.error("1001", "用户名和密码不正确");        }    }}
  5. 重构Controller:LoginController

    package cn.chf.blog.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import cn.chf.blog.enums.ResultEnum;import cn.chf.blog.pojo.Result;import cn.chf.blog.service.LoginService;import cn.chf.blog.utils.ResultJsonUtil;@RestControllerpublic class LoginController {    @Autowired    private LoginService loginService;    @GetMapping("/")    public String hello() {        return "hello world";    }    @GetMapping("/login")    public Result login(@RequestParam("username") String username, @RequestParam("passwd") String passwd) {        return loginService.loginIn(username, passwd);    }}

spring注解

  1. @SpringBootApplication
    相当于添加@Configuration,@EnableAutoConfiguration,@ComponentScan三个注解。
  2. @GetMapping(“/”)
    是@RequestMapping(method = RequestMethod.GET)的缩写。
  3. @RestController
    相当于添加@ResponseBody,@Controller注解
  4. @Autowired
    对成员变量,方法,构造函数进行标注,完成自动装配,注入的工作
  5. @RequestParam(“username”)
    获取参数username,相当于request.getParameter(“username”)(HttpServletRequest)
  6. @Service
    标注服务层组件bean,实例化该组件,如LoginService实例化为loginService
    也可以@Service(“需要的实例化的bean名”)
原创粉丝点击