Spring-boot IN Action(1)

之前在写Spring入门的学习笔记,但是深深感受到单单是“硬学”,即便有穿插一些生动的小例子,还是远远不能用好Spring,更不用谈掌握其核心,深入理解它的思想了。不得不承认,项目是进步的原动力,很复杂的思想、理念,经历几个项目,相信大家都能用的很熟,也会有一定的理解了,辅之以一些参考文档,大神的思想解析,便能够做到游刃有余地利用Spring,而不是被Spring的各种配置,各种思想、各种模式搞得晕头转向。

因此,这一系列的文章,将立足于实战,着眼于项目,以项目作为推动来逐步学习和理解Spring,当然,我们从简单易于上手的Spring-boot开始我们的旅程。我们采用MAVEN构建项目,使用的是Intellij IDEA作为环境,如果不熟悉MAVEN的朋友可以先学习MAVEN的简单使用。

Spring-boot入门

大部分实战的开头都是HelloWorld,我们也不例外,从最简单的程序着手介绍Spring-boot项目的构建过程,当然我们后面会做一点小小的扩展。

1、首先是项目的创建:我们用MAVEN来构建项目,创建完成后的项目结构:

2、接下来我们配置pom文件,配置源码如下:

<?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>org.seu.cambridgewoo</groupId>
    <artifactId>SpringWebDemo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!-- Spring Boot 启动父依赖 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.3.RELEASE</version>
    </parent>

    <dependencies>
        <!-- Spring Boot web依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- Junit 单元测试依赖-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

</project>

3、配置完pom文件后我们开始编写主代码和测试代码,这里需要注意的一点是,Springboot要求我们的源码必须要在package下,因此直接在java文件下创建源文件是不能够通过编译的。所以我们创建两个package然后在package下编写我们的主代码,项目结构如图所示:

,target文件夹是生成后的文件,这里不需要多做考虑;

4、个各类的代码如下:

HelloWorld类,接受http请求并返回数据

package org.seu.cambridge;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Created by Cambridgewoo on 2017/3/15.
 */
@RestController     /*将收到的http请求根据路径分发给对应的controller,RestController是特殊的Controller,
                      其返回值直接作为http的response的body返回给浏览器*/
public class HelloWorld {
    @RequestMapping("/")         //定位路由信息
    public String sayHello(){
        return "Hello,World!";
    }
}
Application类:Spring-boot会做一些准备工作并启动服务器
package org.seu.cambridge;

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

/**
 * Created by Cambridgewoo on 2017/3/15.
 */
@SpringBootApplication         //是一个注解集合
public class Application {
    public static void main(String[] args){
        SpringApplication.run(Application.class,args);
    }
}
HellowWorldTest类:测试了sayHello
package org.seu.cambridge;

import org.junit.Test;
import static junit.framework.Assert.assertEquals;

/**
 * Created by Cambridgewoo on 2017/3/15.
 */
public class HelloWorldTest {
    @Test
    public void testsayHello(){
        assertEquals("Hello,World!",new HelloWorld().sayHello());
    }
}
其中Application类中的@SpringBootApplication是一个注解集合,可以看到其内容如下:

扫描二维码关注公众号,回复: 1455878 查看本文章

5、接下来我们在命令行中输入mvn clean test进行测试得到如下结果:测试通过,接下来我们启动服务器看一看我们的成果,在命令行中输入mvn spring-boot:run,看到结果如下:

从红框标出来的位置可以看到服务器已经启动,我们可以从http://localhost:8080/的位置看到我们的成果了!结果截图如下:

6、至此,我们已经完成了最简单的项目,接下来我们稍作一些些扩展,在前面的HelloWorld类里,有@requestmapping注解,其目的是告知目标url,这里有很多应用方式,比如嵌套使用:;多个url并列:;当我们遇到url呈如下情况时:www.github.io/user1;www.github.io/user2;如果我们针对每一个url逐条创建将会十分的繁琐,因此我们会使用@PathVariable使其自动识别url:;同时我们经常会遇到get或者post不同的请求,我们可以使用对@RequestMapping添加属性的方式,来对不同的请求进行相应:

以上我们例举了不少的情况,具体的实现和结果请大家亲自动手试一试,对于不理解的地方动手后会变得很清晰。

7、下面我们再细致一点,看一看@RestController这个注解,谈这个注解之前,我们看一看项目的结构,test类暂且不谈,Application的目的实际上就是Spring-boot的准备工作,并且启动的服务器,真正的“业务逻辑”是HelloWorld中实现的,但实际应用中,我们会将这个接受http请求并返回数据的接口同业务逻辑分离开来,使得项目更加的模块化和松耦合,便于维护和复用,这里不再展开细说。回到@RestController,这个注解的意思是直接将return的信息以字符串返回给网页,所以我们看到了“HelloWorld!”这一串字符,但刚才也说了,实际应用中,这里往往只是调用各种业务的接口,自然也不会使用@RestController,下面我们简单地试一下@Controller,代码如下:,并且我们需在resources中添加templates文件夹,其中添加hello.html,结构如图:,hello.html的代码如下:

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Getting Started: Serving Web Content</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'Hello, ' + ${name} + '!'" />
</body>
</html>
在HelloWorld类中修改代码如下:

@Controller
public class HelloWorld {

    @RequestMapping("/hello/{name}")
    public String hello(@PathVariable("name") String name, Model model) {
        model.addAttribute("name", name);
        return "hello";          //寻找名字为hello的模板进行渲染
    }
}
完成后我们启动服务器,在网页中浏览到结果: .

至此,我们的第一个Spring-boot程序全部完成。

猜你喜欢

转载自blog.csdn.net/cambridgewoo/article/details/62224465