springcloud 簡單demo

1 創建eureka(註冊中心)
1.1 pom配置

<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.jorian</groupId>
  <artifactId>sc_eureka-server</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  <!-- 導入父工程 -->
  	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.4.RELEASE</version>
		<relativePath />
	</parent>
	
	
  <!-- 設置jdk版本等信息 -->
 	 <properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>
  
  	<!-- 導入eureka依賴 -->
  	<dependencies>
  		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka-server</artifactId>
		</dependency>
		
		<!-- 	    問題:運行springboot項目出現:Type javax.xml.bind.JAXBContext not present
					原因
					java9+版本以後,JAXB默認沒有加載
		
					解決方式
					手動添加模塊到pom
		
					spring boot 1.5.*版本,添加如下代碼: -->
		<!-- Java 6 = JAX-B Version 2.0   -->
		<!-- Java 7 = JAX-B Version 2.2.3 -->
		<!-- Java 8 = JAX-B Version 2.2.8 -->
		<dependency>
		    <groupId>javax.xml.bind</groupId>
		    <artifactId>jaxb-api</artifactId>
		    <version>2.2.11</version>
		</dependency>
		<dependency>
		    <groupId>com.sun.xml.bind</groupId>
		    <artifactId>jaxb-core</artifactId>
		    <version>2.2.11</version>
		</dependency>
		<dependency>
		    <groupId>com.sun.xml.bind</groupId>
		    <artifactId>jaxb-impl</artifactId>
		    <version>2.2.11</version>
		</dependency>
		<dependency>
		    <groupId>javax.activation</groupId>
		    <artifactId>activation</artifactId>
		    <version>1.1.1</version>
		</dependency>
	
	</dependencies>
	

	
	<!-- dependency management -->
  <dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Dalston.SR1</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
  
  
  
</project>

1.2 在src/main/resources 下新建application.yml

security:
  basic:
    enabled: true
  user:
    name: user
    password: password123
server:
  port: 8761
eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone: http://user:password123@localhost:8761/eureka
logging:
  level:

1.3 新建EurekaServerRunApp啓動類


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
/**
 * 註冊中心/配置中心(server)
 * @author gyn
 *
 */
@EnableEurekaServer//表示是一個eurekaserver
@SpringBootApplication
public class EurekaServerRunApp {
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SpringApplication.run(EurekaServerRunApp.class, args);
	}
 
}

1.4 啓動EurekaServerRunApp

打開 http://localhost:8761/
能正常訪問 就是配置成功
在這裏插入圖片描述

2新建生產者provider
2.1pom配置

<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.jorian</groupId>
  <artifactId>sc_eureka-provider2</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.4.RELEASE</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
        <!--boot eureka-->		
        <dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>
		<!-- boot web-->
            <dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
	</dependencies>
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Dalston.SR1</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
  
  
</project>

2.2在src/main/resources 下新建application.yml

server:
  port: 7901
spring:
  application:
    name: provider-user
eureka:
  client:
    serviceUrl:
      defaultZone: http://user:password123@localhost:8761/eureka
logging:
  level:
    root: INFO

2.3新建ProviderRunApp啓動類



import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
/**
 * 生產者
 * @author gyn
 *
 */
@EnableEurekaClient//表示是一個eurekaserver
@SpringBootApplication
public class ProviderRunApp {
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SpringApplication.run(ProviderRunApp.class, args);
	}
 
}

2.4新建生產者 Controller 以供消費者調用此方法



import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
public class provider_Controller {
	@RequestMapping("/hello")
	public String sayhello(String name){
		return "provider1 "+name;
	}
}

2.5 啓動ProviderRunApp

打開 http://localhost:8761/ 就能看見我們配置服務名稱 ip 端口 運行狀態
在這裏插入圖片描述

2.6 重點 要配置多個生產者provider
只需修改application.yml port即可
name: provider-user 這個不要修改,同樣的服務名稱必須相同

3創建消費者consumer
3.1pom配置

<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.jorian</groupId>
	<artifactId>sc_eureka-consumer</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.4.RELEASE</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
		<!-- Feign模塊,接着引入相關依賴,引入Feign依賴,會自動引入Hystrix依賴的 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
            </dependency>
	
		
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
	</dependencies>
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Dalston.SR1</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
</project>

3.2在src/main/resources 下新建application.yml

server:
  port: 7902
spring:
  application:
    name: consumer-hello
eureka:
  client:
    serviceUrl:
      defaultZone: http://user:password123@localhost:8761/eureka
logging:
  level:
    root: INFO

3.3新建ConsumerRunApp啓動類

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
/**
 * 消費者
 * @author gyn
 *
 */
@SpringBootApplication
@EnableEurekaClient
/**
 * @author gyn
 *
 */

public class ConsumerRunApp {
 
	@Bean
	@LoadBalanced	//Ribbon負載均衡
	public RestTemplate restTemplate(){
		return new RestTemplate();
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SpringApplication.run(ConsumerRunApp.class, args);
	}
 
}

3.4 創建消費者controller 以供外界訪問

mport org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
 
@RestController
public class HelloController {
	@Autowired
	private RestTemplate resttemplate;
	@RequestMapping("/hello")
	public String hello(String name){
		String url="http://provider-user/hello?name="+name;
		
		//返回值類型要一致
		return resttemplate.getForObject(url, String.class);
	
	}
	
}

3.5啓動ConsumerRunApp
打開註冊中心 http://localhost:8761/ 就能看見我們配置服務名稱 ip 端口 運行狀態
打開 http://localhost:7902/hello

成功 就能返回 provider1****
在這裏插入圖片描述
如不成功 就根據問題 去解決吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章