Java高级教程之SpringCloud-1:认识微服务和最简单创建过程

时间:2024-04-02 08:09:36

Spring Cloud是微服务micro service的应用框架,首先从微服务讲起。我们接触过一些Web项目工程,多是WAR包结构,部署到服务器上需要容器比如Tomcat的支持。除了WAR包可以运行Web,也可以用SpringBoot框架打成Jar包,直接在服务器上运行起来。有了多个SpringBoot应用,就可以使用SpringCloud把这些微应用连接起来,形成微服务的架构。

 

我们先从一个单应用开始,由于之前有SpringBoot的教程,这里只简单生成一个SpringBoot的工程。也可以从官网直接通过生成器,下载一个完整的可运行的包,再导入编辑器。这里手动创建一个Maven工程,加入SpringBoot依赖,然后新建入口主程序就可以实现了。

 

Java高级教程之SpringCloud-1:认识微服务和最简单创建过程

 

 

Java高级教程之SpringCloud-1:认识微服务和最简单创建过程

 

Java高级教程之SpringCloud-1:认识微服务和最简单创建过程

 

这样我们看到一个Maven工程建立成功,再打开pom.xml,加入spring Boot的依赖包。

 

Java高级教程之SpringCloud-1:认识微服务和最简单创建过程

 

接着,我们新建一个类,并且创建主方法main,命名为ApplicationMain。

 

 

package com.lpplpp.product.app;

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

@SpringBootApplication
public class ApplicationMain {

    public static void main(String[] args) {
        SpringApplication.run(ApplicationMain.class, args);
        System.out.println("product microservice is running");
    }
}

运行这个主方法,可以看到控制台打印了结果:

"product microservice is running"
 
现在我们加入一些逻辑,通过访问浏览器就可以查看产品数据。首先加入一个实体类,里面有产品的字段。
 

package com.lpplpp.product.app.model; public class Product { private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } 
    public Product(Long id, String name) { this.id=id; this.name=name;}

} 再创建一个Service,在Service中生成一个产品对象返回。

 

package com.lpplpp.product.app.service; import com.lpplpp.product.app.model.Product; import org.springframework.stereotype.Service; @Service public class ProductService { public Product getById(Long id) { return new Product(1L,"mobile"); } }

接着,还需要一个Controller。

 

package com.lpplpp.product.app.controller; import com.lpplpp.product.app.model.Product; import com.lpplpp.product.app.service.ProductService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; @RestController public class ProductController { @Autowired private ProductService productService; @GetMapping(value = "product/{id}") public Product getById(@PathVariable("id") Long id) { return productService.getById(id); } } 

 

重启这个应用,来试一下访问浏览器地址:http://localhost:8080/product/1
结果:

{"id":1,"name":"mobile"}

这样,一个产品的微服务就创建成功了。我们用了几小步,就实现了一个SpringBoot的应用。

 
SpringCloud又和SpringBoot有很大关系,官网如下: 
https://spring.io/projects/spring-cloud
 
Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus, one-time tokens, global locks, leadership election, distributed sessions, cluster state). Coordination of distributed systems leads to boiler plate patterns, and using Spring Cloud developers can quickly stand up services and applications that implement those patterns. They will work well in any distributed environment, including the developer’s own laptop, bare metal data centres, and managed platforms such as Cloud Foundry.
 
这里说SpringCloud可以实现多个微服务一起工作,还能互相调用,部署也能分布式进行多点集群。现在这里只有一个产品的微服务,所以如果再创建其他微服务,就可以用到SpringCloud集成了。