springboot简介

springboot做为微服务的开发集合框架,有着天然的好处,它不像springmvc那样笨重繁杂,springmvc众多的配置使得开发人员很厌烦,为解决众多的配置带来的烦扰,springboot采用约定大于配置的方式,即开发过程中的配置项可以不配置,spring已经内置了这些配置。例如,web服务端口默认为8080,也就是说我们不进行认为配置项目仍然可以正常运行。在这里我们推荐,对于那些不重要的配置使用默认的方式,对于那些终于的配置请使用配置的方式。

使用场景

springboot一出生就被赋予了神圣的使命,即微服务。另外springboot又可以拆分项目独立功能,为分布式架构提供了良好的基础。我们总结springboot可以使用在以下场景中,

1、微服务,即从某个大型系统中拆分出独立的公共服务;

2、前后端分离,即把前端页面和后端的业务逻辑处理分离开,单独开发互不影响;

3、分布式,即分布式的开发基础;

安装

1、网上下载

搜索“springboot”或者输入网址“https://spring.io/projects/spring-boot”,进入下面的页面

springboot微服务之间的调用ip获取不到 springboot微服务部署_maven

找到红框中的“spring initializr”,点击进入,如下图,

springboot微服务之间的调用ip获取不到 springboot微服务部署_spring_02

从上图可以选择项目的构建方式“maven”或“gradle”,开发平台“java”或“kotlin”等,springboot的版本,我这里选择的maven的方式,使用Java开发平台,使用的springboot的版本为最新版2.1.2。下面需要填写maven的信息group和Artifact,然后在右边选择相应的依赖,我这里需要开发web项目,我需要选择web的依赖,另外我还选择了devtools这个依赖主要是一些和开发相关的工具,像保存代码后自动重启服务等功能,如下图

springboot微服务之间的调用ip获取不到 springboot微服务部署_java_03

填写好信息后点击上图中的绿色按钮,“Generate Project”,生成项目会提示下载信息,下载相应的zip文件。

2、导入IDE

我这里使用的eclipse,由于在第一步中我们使用的maven的方式构建的工程,所以在导入项目的时候要确保IDE中已经配置好maven的环境,请参考“maven之一:maven安装和eclipse集成”。

使用maven导入的方式,导入已存在的maven项目,如下图

springboot微服务之间的调用ip获取不到 springboot微服务部署_spring_04

然后,选择刚才从spring官网下载下的zip的解压文件,进行导入。在成功导入后,IDE会自动根据项目中的pom文件从网上下载相应的依赖文件(看个人网速)。

3、项目结构

下图是我的项目结构,

springboot微服务之间的调用ip获取不到 springboot微服务部署_maven_05

可以看到这是标准的maven的项目结构,src/main/java下是Java文件,src/main/resources是资源文件及前端页面,其他文件夹不再解释,主要的看下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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>cn.com.my</groupId>
    <artifactId>study01</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>study01</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <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-devtools</artifactId>
            <scope>runtime</scope>
        </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>

</project>

看下以下依赖

spring-boot-starter-web 这个是springboot的web依赖

spring-boot-devtools 这个是开发工具包

spring-boot-starter-test 这个是测试的

细心的读者会发现怎么没有springboot相关的那,我们在pom文件中上半部分,可以看到下面的配置

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

上面的配置即是springboot的基础配置。

使用

经过上面的配置及介绍下面开始使用。

springboot的启动方式可以是使用main方法的方式,也可以部署在tomcat等服务器下。springboot提供了启动类,如下是我项目中的启动类,

package cn.com.my.study01;

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

@SpringBootApplication
public class Study01Application {

    public static void main(String[] args) {
        SpringApplication.run(Study01Application.class, args);
    }

}

这是一个普通的Java类,上面有springbootApplication的注解,运行main方法既可启动springboot项目,启动图如下

springboot微服务之间的调用ip获取不到 springboot微服务部署_java_06

这样一个springboot项目已经运行起来了。

 

有不当之处欢迎指出,感谢!