Spring Cloud的微服务是基于Spring Boot的,每一个服务都是一个Spring Boot应用,每个Spring Boot可以搭配不同的Spring Cloud组件,一个简单的服务打个比方,可以是一个搭配了spring-boot-starter-web的Spring Boot应用(SpringMVC),接下来我们来简单创建一个微服务。
项目搭建
Spring提供了很多快速构建应用的方法,IntelliJ里面提供了一个很好用的搭建工具Spring Initializer,可以直接创建Spring Boot项目。
接下来选择所需的Spring Boot组件,一个最小的可用Spring MVC可以只包含Web组件。
也可以通过maven项目新建,新建出来的项目包含web组件的maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
以及一个入口方法类
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Example {
public static void main(String[] args) throws Exception {
SpringApplication.run(Example.class, args);
}
}
其中上面三个注解是搭建一个Spring Boot项目的关键,它为我们做好了所有配置。
- @Configuration代表这是个Spring Boot配置类
- @EnableAutoConfiguration自动引入Spring Boot为我们做的配置
- @ComponentScan则自动扫描当前目录以及子目录寻找Spring Boot组件
上面三个注解是标准写法,所以Spring Boot定义了@SpringBootApplication代替上面三个注解,这样一个注解就够了。入口方法里面只有一句run代码,非常优雅。
另外一个值得关注的文件是Spring配置文件application.properties,用过Spring的一定不会陌生,它可以定义我们项目的配置,格式是最简单的xxx.xxx=xxx
提供服务
按照MVC的模式,我们接下来应该写一个Controller类来提供服务,并注解@RestController来配置这个Controller,但是为了方便,也可以直接在我们的Example入口类上加多一个@RestController,然后写一个home()方法。其中@RestController注解是为了把服务映射到根目录"/"上面。
@RestController
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Example {
@RequestMapping("/")
String home() {
return “Hello World”;
}
...
}
运行服务
点击IDE上的运行工具,或者命令行到项目目录执行以下Maven命令,我们的第一个服务就跑起来了。
mvn clean package spring-boot:run
这时可以访问http://localhost:8080/ 就会看到我们熟悉的Hello World。