zoukankan      html  css  js  c++  java
  • SpringBoot入门简易教程

    使用SpringBoot来开发一个简单的restful api网关功能,目标:实现对SpringBoot的简单入门。

    1. 创建SpringBoot项目

    可以通过spring官网(https://start.spring.io)的来创建springboot项目,或者idea的springboot initialization来创建,或者手工创建一个Maven工程然后引入springboot的dependency。

    官网创建注意事项:在serch for dependency输入web,即可完成基本的restful接口网关的功能,如果要JPA或者oauth安全相关的组件,可以增加rest repository、spring security等相关组件依赖库,spring提供的配套组件还是很多的,基本涵盖了所有应用场合。

    2. 工程结构

    工程中maven的pom文件:

    <parent>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-parent</artifactId>

            <version>1.4.7.RELEASE</version>

            <relativePath/> <!-- lookup parent from repository -->

        </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-web</artifactId>

            </dependency>

            <dependency>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-starter-test</artifactId>

                <scope>test</scope>

            </dependency>

        </dependencies>

        <build>

            <plugins>

                <plugin>

                    <groupId>org.springframework.boot</groupId>

                    <artifactId>spring-boot-maven-plugin</artifactId>

                </plugin>

            </plugins>

        </build>

    在国内访问maven的依赖库速度感人,建议使用阿里云的maven镜像服务器,或者使用公司的maven私服,maven setting.xml中需要添加mirror地址,阿里云maven地址:

    <mirror>

        <id>nexus-aliyun</id>

        <mirrorOf>*</mirrorOf>

        <name>Nexus aliyun</name>

        <url>http://maven.aliyun.com/nexus/content/groups/public</url>

    </mirror>

    自动生成的Application.java这个类相当于我们程序的main函数入口,springboot集成了Tomcat和Jetty,默认使用Tomcat作为应用容器,开发者只需要将工程打成jar包直接丢到服务器上就可以执行了。

    SpringBootStartApplication.java:

    @SpringBootApplication

    public class SpringbootStartApplication {

        public static void main(String[] args) {

            SpringApplication.run(SpringbootStartApplication.class, args);

        }

    }

    所有的springboot application启动类都需要在类级别上加上@SpringBootApplication注解。

    创建一个UserController类,里面只有获取用户信息的方法,分别根据参数和请求方式的不同用三种方法进行了重写。

    第一种:使用get请求用户信息的实现方式。

    代码如下,写好后运行Application类,运行成功后可以使用http发包工具进行测试,发包工具推荐使用postman,get请求的URL为http://localhost:8080/springboot/getUserByGet?userName=feiweiwei

    //@RestController注解能够使项目支持Rest

    @RestController

    //表示该controller类下所有的方法都公用的一级上下文根

    @RequestMapping(value = "/springboot")

    public class UserController {

        //这里使用@RequestMapping注解表示该方法对应的二级上下文路径

        @RequestMapping(value = "/getUserByGet", method = RequestMethod.GET)

        String getUserByGet(@RequestParam(value = "userName") String userName){

            return "Hello " + userName;

        }

    }

    @RequestMapping表示请求的URL上下文路径,@RequestParam,该注解可以通过value指定入参。

    第二种:POST的请求方式。

    通过在@RequestMapping注解中设置method为POST来表示该请求为POST请求。

    //通过RequestMethod.POST表示请求需要时POST方式

        @RequestMapping(value = "/getUserByPost", method = RequestMethod.POST)

        String getUserByPost(@RequestParam(value = "userName") String userName){

            return "Hello " + userName;

        }

    第三种:请求参数为JSON格式的请求方法。

    请求参数是像上面那样通过url form形式提交的请求参数,那么必须使用@RequestParam注解来标示参数,如果使用的请求报文是POST形势的JSON串,那么这里在入参的注解一定要使用@RequestBody,否则会报json解析错误。

    //在入参设置@RequestBody注解表示接收整个报文体,这里主要用在接收整个POST请求中的json报文体,

        //目前主流的请求报文也都是JSON格式了,使用该注解就能够获取整个JSON报文体作为入参,使用JSON解析工具解析后获取具体参数

        @RequestMapping(value = "/getUserByJson",method = RequestMethod.POST)

        String getUserByJson(@RequestBody String data){

            return "Json is " + data;

        }

  • 相关阅读:
    数组对象去重
    数组对象中key值为数组的数据处理成多个对应的数组对象
    数组对象相同的key值合并,并且把对应的id放到一个数组
    vue使用element-ui tabs切换 实现按需加载
    vue使用element-ui tabs切换echarts 解决宽度100% 问题
    递归获取所有JSON对象
    JS通过内核判断各种浏览器区分360与谷歌
    vue 跳转当前页面不刷新问题
    docker 常用命令
    java 比较时间的几种方法
  • 原文地址:https://www.cnblogs.com/windpoplar/p/10921811.html
Copyright © 2011-2022 走看看