简谈SpringCloud的入门配置(二)
2020-12-13 03:10
标签:ali hello localhost 访问 public net bsp das type 入门实例的四步骤: 1)配置Eureka服务器 在Spring官网上新建一个SpringCloud项目 增加Eurake组件 将其中的pom.xml文件拷贝至eclipse新建的Maven文件中 由于SpringCloud是基于SpringBoot的,先创建一个启动类Application 创建配置文件application.properties 启动程序,通过url:http://localhost:5121进行访问 2)创建一个注册服务实例 在spring官网上新建一个SpringCloud项目 增加web和cloud discovery组件 将其中的pom.xml文件拷贝至eclipse新建的Maven文件中 编写程序启动类Application 编写配置文件application.properties 编写一个Controller类 启动实例(在启动前启动Eurake服务端) 3)调用服务 将上述实例1复制一份,并修改项目名 修改appplication.properties配置文件 修改启动类Application注解 同时启动Eurake服务端,和实例1和实例2,进行测试 4)实现客户端与服务端的远程调用 在instanceServer中发布一个login方法的restful接口给instanceClient调用该接口 在SpringCloud中远程调用的方法有两种: 1.Ribbon+RestTemplate,基于restful实现。 2.Feign(默认启动Ribbon负载均衡) 本篇讲述的是第一种方式的实现,第二种方式可看第三章的讲解 修改注册服务,新建User类 修改Controller,增加一个login方法 修改客户端实例 增加Ribbon依赖 修改启动类Application,标记该实例是发现服务实例 创建UserService类 依次启动注册中心、服务提供实例、服务发现实例 远程调用成功 基于ribbon实现负载均衡 复制一份instanceserver,并修改maven坐标和配置文件中的端口 修改Controller中的返回信息 依次启动Eurake注册中心,instanceServer1,instanceServer2和instanceClient,多次访问登陆接口,查看结果 第一次调用 第二次调用 简谈SpringCloud的入门配置(二) 标签:ali hello localhost 访问 public net bsp das type 原文地址:https://www.cnblogs.com/lch-Hao/p/11069916.htmlpackage cn.lch;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer //启动Eurake服务
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
#1.配置端口
server.port=5121
#2.配置eureka主机名,找到eureka所在的机器
eureka.instance.hostname=localhost
#3.是否将自身注册为服务 false表示不注册
eureka.client.register-with-eureka=false
#4.是否主动发现服务 false表示不发现
eureka.client.fetch-registry=false
#5.对外提供的注册入口
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
package cn.lch;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
#指定实例端口
server.port=8080
#指定实例名,springcloud是通过实例名称来寻址服务的
spring.application.name=instanceServer
#指定Eureka服务端访问路径
eureka.client.service-url.defaultZone=http://localhost:5121/eureka
package cn.lch.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@RequestMapping("/say")
public String say() {
return "Hello,SpringCloud";
}
}
#指定实例端口
server.port=8081
#指定实例名,springcloud是通过实例名称来寻址服务的
spring.application.name=instanceClient
#指定Eureka服务端访问路径
eureka.client.service-url.defaultZone=http://localhost:5121/eureka
package cn.lch;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient //标记该项目为一个,该实例是一个发现服务的实例
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
package cn.lch.pojo;
import java.io.Serializable;
public class User implements Serializable{
/**
*
*/
private static final long serialVersionUID = 7260598142983180828L;
private Integer id;
private String username;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
package cn.lch.controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import cn.lch.pojo.User;
@RestController
public class UserController {
/**
* 用户登录
* @return
*/
@RequestMapping(value="/login",method=RequestMethod.POST)
public String login(@RequestBody User user){
System.out.println("用户名:"+user.getUsername()+",密码:"+user.getPassword());
return "Ok—intanceServer--8080";
}
}
package cn.lch;
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//2.用于标识该项目是一个Eureka客户端(发现服务)
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
//2.创建RestTemplate实例对象,用来远程调用服务
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
package cn.lch.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import cn.lch.pojo.User;
@Service
public class UserService {
@Autowired
private RestTemplate restTemplate;
public String login(User user){
String result = restTemplate.postForObject("http://instanceServer/login",user, String.class);
return result;
}
}