SpringCloud(一)构建SpringBoot微服务

标签: springcloud springboot
1943人阅读 评论(0) 收藏 举报
分类:

本篇文章将会展示两个springboot项目,一个是provider(服务提供者),另一个是consumer(服务消费者).基本思路是provider通过查询数据库返回信息,consumer通过rest的方式访问provider.

下面看代码:

Provider

DemoMicroserviceProviderUserApplication.java

package com.zhuyang.cloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
//@EnableDiscoveryClient
public class DemoMicroserviceProviderUserApplication {

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

package com.zhuyang.cloud.entity;

import java.io.Serializable;
import java.math.BigDecimal;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User implements Serializable {
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)

	private Long id;
	@Column
	private String username;
	@Column
	private String name;
	@Column
	private Short age;
	@Column
	private BigDecimal balance;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Short getAge() {
		return age;
	}

	public void setAge(Short age) {
		this.age = age;
	}

	public BigDecimal getBalance() {
		return balance;
	}

	public void setBalance(BigDecimal balance) {
		this.balance = balance;
	}

}

UserRepository.java

package com.zhuyang.cloud.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import com.zhuyang.cloud.entity.User;

@Repository
public interface UserRepository extends JpaRepository<User, Long> {

}
UserController.java

package com.zhuyang.cloud.controller;

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;

import com.zhuyang.cloud.entity.User;
import com.zhuyang.cloud.repository.UserRepository;

@RestController
public class UserController {
	@Autowired
	private UserRepository userRepository;

	@GetMapping(path = "/simple/{id}") //http://localhost:8001/simple/1
	public User findByid(@PathVariable Long id) {
		return this.userRepository.findOne(id);
	}
}
application.yml

server:
  port: 8001  ##port
spring:
  jpa:  ##use jpa for repository
    generate-ddl: false
    show-sql: true
    hibernate:
      ddl-auto: none
  datasource:
    platform: h2 ##use h2 as database
    schema: classpath:schemal.sql  ##DDL 
    data: classpath:data.sql  ##DML
  application:
    name: miciroservice-provider ##application name
logging:
  level:
    root: info
    org.hibernate: info
    org.hibernate.type.descriptor.sql.BasicBinder: TRACE
    org.hibernate.type.descriptor.sql.BasicExtractor: TRACE
    com.zhuyang: debug
data.sql

insert into user (id,username,name,age,balance) values(1,'yz45177','zhuyang',28,120.7);
insert into user (id,username,name,age,balance) values(2,'xj78921','lucy',32,203.5);
insert into user (id,username,name,age,balance) values(3,'xh78273','xiuhui',35,120.4);
insert into user (id,username,name,age,balance) values(4,'js21242','jason',29,203.2);
insert into user (id,username,name,age,balance) values(5,'gg21122','guzong',40,557.6);

schemal.sql

drop table user if exists;
create table user(
	id bigint generated by default as identity primary key,
	username varchar2(40),
	name varchar2(20),
	age int(3),
	balance decimal(10,2)

);


运行DemoMicroserviceProviderUserApplication.java 并在浏览器访问http://localhost:8001/simple/1 返回下面的结果

<User>
<id>1</id>
<username>yz45177</username>
<name>zhuyang</name>
<age>28</age>
<balance>120.70</balance>
</User>


Consumer

DemoMicroserviceConsumerUserApplication.java

package com.zhuyang.cloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableDiscoveryClient
public class DemoMicroserviceConsumerUserApplication {
	@Bean
	@LoadBalanced //ribbon
	public RestTemplate restTemplate() {  // equals to RestTemplate restTemplate = new RestTemplate()
		return new RestTemplate();
	}

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

MovieController.java

package com.zhuyang.cloud.controller;

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;
import org.springframework.web.client.RestTemplate;

import com.zhuyang.cloud.entity.User;


@RestController
public class MovieController {

	@Autowired
	private RestTemplate restTemplate;

	@GetMapping(path = "/movie/{id}")
	public User findByid(@PathVariable Long id) {
               //通过restTemplate访问provider服务

		return this.restTemplate.getForEntity("http://localhost:8001/simple/" + id, User.class).getBody();
		
	}
}

通过访问http://localhost:8000/movie/1

<User>
<id>1</id>
<username>yz45177</username>
<name>zhuyang</name>
<age>28</age>
<balance>120.70</balance>
</User>






查看评论

7天学会spring cloud系列

《7天学会spring cloud系列》之创建配置管理服务器及实现分布式配置管理应用。   本文涉及到的项目: 开源项目:http://git.oschina.net/zhou666/spri...
  • joeyon
  • joeyon
  • 2016-08-29 17:03:31
  • 6889

springcloud入门(1)

今天用springboot创建一个小应用。 首先,创建一个简单的maven应用,如下图: 然后,配置pom.xml文件: ...
  • onlylixiaobei
  • onlylixiaobei
  • 2017-02-12 19:03:02
  • 1061

SpringCloud(一) 跟着博文学搭建

暂不说dubbo与SpringCloud孰优孰劣,因为我都没用过 跟着博文spring cloud config 入门 学习Spring Cloud 搭建,但是这篇文章中也有一些有问题的...
  • zhouzhupianbei
  • zhouzhupianbei
  • 2017-07-25 20:40:36
  • 1037

spring cloud微服务框架 第一天

第一天,熟悉spring boot,并使用spring boot创建一个应用。   Spring Boot是Spring团队推出的新框架,它所使用的核心技术还是Spring框架,主要是Sprin...
  • qq_26562641
  • qq_26562641
  • 2016-12-01 14:54:13
  • 2783

spring cloud教程之使用spring boot创建一个应用

《7天学会spring cloud》第一天,熟悉spring boot,并使用spring boot创建一个应用。   Spring Boot是Spring团队推出的新框架,它所使用的核心技术还...
  • u011955252
  • u011955252
  • 2016-11-20 15:58:08
  • 960

spring cloud微服务框架 第二天

第二天  创建配置管理服务器及实现分布式配置管理应用。   本文涉及到的项目: 开源项目:http://git.oschina.net/zhou666/spring-cloud-7simp...
  • qq_26562641
  • qq_26562641
  • 2016-12-01 14:55:17
  • 2623

Spring Cloud 3:Spring Boot快速入门

简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复黏贴的配置有一些厌烦?那么您就不妨来试试使用Spring Boo...
  • shuijieshuijie
  • shuijieshuijie
  • 2016-11-11 21:24:08
  • 2583

微服务--使用Spring Boot创建微服务

过去几年以来,“微服务架构”的概念已经在软件开发领域获得了一个稳定的基础。作为“面向服务架构”(SOA)的一个继任者,微服务同样也可以被归类为“分布式系统”这一类,并且进一步发扬了SOA中的许多概念与...
  • szzt_lingpeng
  • szzt_lingpeng
  • 2016-10-30 22:20:08
  • 8784

SpringBoot构建微服务实战 之 @Import

SpringBoot构建微服务实战 之 @ImportSpringBoot 的 @Import 用于将指定的类实例注入之Spring IOC Container中。 SpringBoot 提供了 三...
  • u012437781
  • u012437781
  • 2017-11-24 16:43:27
  • 2008

SpringBoot搭建微服务(二)实现MVC

SpringBoot搭建微服务(二)实现MVC
  • breeze048
  • breeze048
  • 2016-12-14 16:32:03
  • 2355
    个人资料
    持之以恒
    等级:
    访问量: 2万+
    积分: 571
    排名: 9万+
    文章存档
    最新评论