idea中创建EurekaServer注册中心和eureka client和Eureka Server加上安全的用户认证
new -project 选择spring initializr创建自己的包名,类名。这一步与创建springboot有区别,画重点了,注意下面的两个红框框项目名在Application类上添加注解@EnableEurekaServer声明注册中心 在Application.yml配置文件添加图中内容# eureka.client.registerWi...
new -project 选择spring initializr
创建自己的包名,类名。
这一步与创建springboot有区别,画重点了,注意下面的两个红框框
项目名
在Application类上添加注解@EnableEurekaServer声明注册中心
在Application.yml配置文件添加图中内容
# eureka.client.registerWithEureka :表示是否将自己注册到Eureka Server,默认为true。由于当前这个应用就是Eureka Server,故而设为false
# eureka.client.fetchRegistry :表示是否从Eureka Server获取注册信息,默认为true。因为这是一个单点的Eureka Server,不需要同步其他的Eureka Server节点的数据,故而设为false。
# eureka.client.serviceUrl.defaultZone :设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。默认是http://localhost:8761/eureka ;多个地址可使用 , 分隔。
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
#声明自己是服务端
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
启动工程,打开浏览器访问:
http://localhost:8761 ,界面如下:
创建一个服务提供者 (eureka client):
controller
package com.xf.eureka_client.controller;
import com.xf.eureka_client.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api/v1/product")
public class ProductController {
@Autowired
private ProductService productService;
/**
* 获取所有商品列表
* @return
*/
@RequestMapping("list")
public Object list(){
return productService.listProduct();
}
/**
* 根据id查找商品详情
* @param id
* @return
*/
@RequestMapping("find")
public Object findById(@RequestParam("id") int id){
return productService.findById(id);
}
}
domain
package com.xf.eureka_client.domain;
import java.io.Serializable;
public class Product implements Serializable {
public Product(){ }
public Product(int id, String name, int price, int store){
this.id = id;
this.name = name;
this.price = price;
this.store = store;
}
private int id;
/**
* 商品名称
*/
private String name;
/**
* 价格,分为单位
*/
private int price;
/**
* 库存
*/
private int store;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getStore() {
return store;
}
public void setStore(int store) {
this.store = store;
}
}
ProductService
package com.xf.eureka_client.service;
import com.xf.eureka_client.domain.Product;
import java.util.List;
public interface ProductService {
List<Product> listProduct();
Product findById(int id);
}
ProductServiceImpl
package com.xf.eureka_client.service.impl;
import com.xf.eureka_client.domain.Product;
import com.xf.eureka_client.service.ProductService;
import org.springframework.stereotype.Service;
import java.util.*;
@Service
public class ProductServiceImpl implements ProductService
{
private static final Map<Integer, Product> daoMap = new HashMap<>();
static {
Product p1 = new Product(1,"iphonex",9999, 10);
Product p2 = new Product(2,"冰箱",5342, 19);
Product p3 = new Product(3,"洗衣机",523, 90);
Product p4 = new Product(4,"电话",64345, 150);
Product p5 = new Product(5,"汽车",2345, 140);
Product p6 = new Product(6,"椅子",253, 20);
Product p7 = new Product(7,"java编程思想",2341, 10);
daoMap.put(p1.getId(),p1);
daoMap.put(p2.getId(),p2);
daoMap.put(p3.getId(),p3);
daoMap.put(p4.getId(),p4);
daoMap.put(p5.getId(),p5);
daoMap.put(p6.getId(),p6);
daoMap.put(p7.getId(),p7);
}
@Override
public List<Product> listProduct() {
Collection<Product> collection = daoMap.values();
List<Product> list = new ArrayList<>(collection);
return list;
}
@Override
public Product findById(int id) {
return daoMap.get(id);
}
}
EurekaClientApplication
package com.xf.eureka_client;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@EnableEurekaClient
@SpringBootApplication
public class EurekaClientApplication
{
public static void main(String[] args)
{
SpringApplication.run(EurekaClientApplication.class, args);
}
}
application.yml
在Application.yml配置文件添加内容,注意defaultZone要加上eureka结尾,不然找不到地址注册
server:
port: 8771
#指定注册中心地址
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
#服务的名称
spring:
application:
name: product-service
我们启动了Eureka Server,然后在浏览器中输入http://localhost:8761/后,直接回车,就进入了spring cloud的服务治理页面,这么做在生产环境是极不安全的,下面,我们就给Eureka Server加上安全的用户认证.
一、添加spring-security支持并在配置文件中加入安全认证
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
# 安全认证的配置
security:
basic:
enabled: true #开启认证
user:
name: user
password: 123456
http://localhost:8761回车后,会发现需要输入用户名和密码进行验证,输入正确之后,才会进入Eureka Server的服务治理页面。
更多推荐
所有评论(0)