极速切入Spring Boot微服务框架

jopen 8年前

前言</span></span>


         “微服务(Microservices)”目前业界比较火的词汇,可以发现infoq和一些其他的软件类媒体网站都开辟了专栏,包括我的大神Martin Fowler(http://martinfowler.com /)的主站也对微服务开辟了专栏,另外各种微服务相关的文章转发我就不说了。Spring Boot这种微框架热别适合微服务应用的开发,如果对Spring比较熟悉,然后来使用这种框架的时候会很长简单,如果没有Spring基础,Spring Boot也是切入Spring生态的一个很好的入口。今天这篇文章主要介绍了我在使用Spring Boot创建一个应用的过程,带大家随意感受一下Spring Boot的威力。后面我会翻译相关的一些“微服务”架构相关的一些文章,有兴趣可以一起学习。
       另外一个让我兴奋的特点是我可以像部署node应用一样玩转java web应用啦:)

1,Spring Boot简介

Spring Boot是一个微型框架,可以用来“极速”创建一个基于Spring的应用,它可以自动配置Spring的各种组件,帮助用户快速搭建一个独立的Spring应用。

下面是我在本机使用Spring Boot创建应用的过程:

2,安装Spring Boot CLI

Spring Boot CLI是一个快速创建Spring应用原型的工具,它使得你可以运行Groovy脚本,这意味着你可以用类似java语法的语言来写code,我的开发环境是MAC OSX。

我们不需要一定使用CLI来创建Spring应用,但是这绝对是个快速创建Spring应用的方法。接下来,首先我首先在我的机器上安装Spring Boot CLI,我用的是Homebrew工具,这个东西在MAC环境下使用,类似Ubuntu下的apt-get,下面命令安装Spring Boot CLI:
$ brew tap pivotal/tap  $ brew install springboot 
</div> </div> </span>
如果你也想要Homebrew,请访问http://brew.sh/获取。
</div>

3,第一个极简的例子,看看Spring Boot能做到的

我们创建一个groovy文件,命名叫App.groovy
@RestController  class ThisWillActuallyRun{      @RequestMapping("/")   String home(){     "Hello World"    }    }
接下来在命令行键入:spring run App.groovy,看见下面标识和打印日志就ok了:
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.2.5.RELEASE)
接下来可以访问了,http://localhost:8080,可以看到页面已经输出"Hello World",这是令我激动的地方,因为我可以像启动NodeJS应用一样来玩转我的JAVA Web应用了,这都是由于Spring Boot内嵌了tomcat来为我们做到的,并且它为我们做了很多事情,我们基本上可以只需要在文本文件里面写上几十个字符就可以创建一个基于 Spring框架技术的Web应用了。
</div>

4,稍微完整并且可部署的应用

我们先创建一个空的maven应用,pom.xml文件如下:

<?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>com.floatlu.lab</groupId>      <artifactId>spriboot</artifactId>      <version>1.0-SNAPSHOT</version>      <!--继承spring-boot-starter-parent的maven配置-->      <parent>          <groupId>org.springframework.boot</groupId>          <artifactId>spring-boot-starter-parent</artifactId>          <version>1.2.3.RELEASE</version>      </parent>      <properties>          <spring.version>4.1.6.RELEASE</spring.version>      </properties>      <dependencies>          <!--创建web需要的依赖-->          <dependency>              <groupId>org.springframework.boot</groupId>              <artifactId>spring-boot-starter-web</artifactId>          </dependency>      </dependencies>      <!--打包需要的插件-->      <build>          <plugins>              <plugin>                  <groupId>org.springframework.boot</groupId>                  <artifactId>spring-boot-maven-plugin</artifactId>                  <version>1.2.3.RELEASE</version>              </plugin>          </plugins>      </build>      <repositories>          <repository>              <id>spring-snapshots</id>              <url>http://repo.spring.io/snapshot</url>              <snapshots>                  <enabled>true</enabled>              </snapshots>          </repository>          <repository>              <id>spring-milestones</id>              <url>http://repo.spring.io/milestone</url>          </repository>      </repositories>      <pluginRepositories>          <pluginRepository>              <id>spring-snapshots</id>              <url>http://repo.spring.io/snapshot</url>          </pluginRepository>          <pluginRepository>              <id>spring-milestones</id>              <url>http://repo.spring.io/milestone</url>          </pluginRepository>      </pluginRepositories>  </project>

pom.xml 文件非常简单,主要是需要添加一个parent的节点来配置改pom继承spring-boot-starter-parent的配置,并且添加一个构建 web需要的依赖spring-boot-starter-web,其次就是maven打包需要的插件spring-boot-maven-plugin 了。最下面是配置的maven源,官方文档说非snapshot版本的Spring Boot是不需要该配置的,我没有试。

接下来创建一个App.java类,这个类是Spring Boot启动类:

@SpringBootApplication  @ComponentScan(value = "com.spriboot.controller")  public class App {        public static void main(String ...s){          SpringApplication.run(App.class, s);      }    }
其中ComponentScan注解配置Spring扫描组件的路径,这个和通常的Spring用法一致,在Controller包里面我创建了一个Example类并且打上@RestControllrt注解:

@RestController  public class Example {        @RequestMapping("/home")      public String home(){          return "homepage";      }  } 
这个写法和普通的Spring MVC写法一致。不同的是@RestController注解,这表明这是一个Restful的Controller,其返回值将会直接作为 Response Body返回给浏览器,如果需要返回到模板引擎的话需要使用普通的@Controller注解。接下来启动App.java运行主函数,就可以开启这个应用了。

5,打包部署

在项目下面执行mvn package来把项目打包成jar:
比如我的项目打包完成之后是spriboot-1.0-SNAPSHOT.jar文件,然后java -jar spriboot-1.0-SNAPSHOT.jar就可以部署这个应用了。
</div>

来自:http://jvmplus.duapp.com/