springcloud模板

  • eureka端

  • 建立一个springBoot项目,然后导入jar包
  <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            <version>2.2.1.RELEASE</version>
            <exclusions>
                <exclusion>
                    <artifactId>servlet-api</artifactId>
                    <groupId>javax.servlet</groupId>
                </exclusion>
            </exclusions>
        </dependency>
  • 配置信息
server:
  port: 7001

eureka:
  instance:
    hostname: localhost #eureka实例所在的主机名
  client:
    fetch-registry: false # 是否从eureka中获取信息
    register-with-eureka: false # 是否注册到eureka
  server:
    eviction-interval-timer-in-ms: 1000 # 设置清理的时间,单位是毫秒
    enable-self-preservation: false # 关闭保护模式
  • 在启动类中开启服务注解
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {

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

}
  • 启动项目

 

服务端

  • 也是新建一个springboot项目,导入jar
 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>2.2.1.RELEASE</version>
            <exclusions>
                <exclusion>
                    <artifactId>servlet-api</artifactId>
                    <groupId>javax.servlet</groupId>
                </exclusion>
            </exclusions>
        </dependency>
 <dependency> <!-- 进行SpringCloud依赖包的导入处理 -->
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Finchley.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
  • 进行配置
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka
  instance:
    instance-id: provider
    prefer-ip-address: true # 显示ip地址
    lease-renewal-interval-in-seconds: 2 # 设置心跳的间隔时间单位秒
    lease-expiration-duration-in-seconds: 5 # 表示eureka server至上一次收到client的心跳之后,等待下一次心跳的超时时间,在这个时间内若没收到下一次心跳,则将移除该instance

spring:
  application:
    name: product
  • 在启动类中开启客户端注解
@EnableEurekaClient
@SpringBootApplication
public class ProductApplication {

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

}
  • 启动项目,可以发现已经注册到了eureka

 

  • 消费端

  • 导入jar
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>2.2.1.RELEASE</version>
            <exclusions>
                <exclusion>
                    <artifactId>servlet-api</artifactId>
                    <groupId>javax.servlet</groupId>
                </exclusion>
            </exclusions>
        </dependency>
  • 添加配置类

@Configuration
public class RestConfig {
    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
        return  new RestTemplate();
    }

    @Bean
    public HttpHeaders getHeaders() { // 要进行一个Http头信息配置
        HttpHeaders headers = new HttpHeaders(); // 定义一个HTTP的头信息
        String auth = "admin:123456"; // 认证的原始信息
        byte[] encodedAuth = Base64.getEncoder()
                .encode(auth.getBytes(Charset.forName("US-ASCII"))); // 进行一个加密的处理
        String authHeader = "Basic " + new String(encodedAuth);
        headers.set("Authorization", authHeader);
        return headers;
    }
}
  • 添加配置

eureka:
  client:
    service-url:
#      defaultZone: http://admin:123456@eureka1:7001/eureka,http://admin:123456@eureka2:7002/eureka,http://admin:123456@eureka3:7003/eureka
      defaultZone: http://admin:123456@eureka1:7001/eureka
    register-with-eureka: false
  • 在启动类上添加注解

@EnableEurekaClient
  • 调用接口

    public static final String PRODUCT_GET_URL = "http://PRODUCT/test/get/";

    @Resource
    private RestTemplate restTemplate;
    @Resource
    private HttpHeaders httpHeaders;

    @RequestMapping("/get")
    public String get(String id) {

        ResponseEntity<String> exchange = restTemplate.exchange(PRODUCT_GET_URL + id, HttpMethod.GET, new HttpEntity<>(httpHeaders), String.class);
        return JSON.toJSONString(exchange);
    }
  • 完成

 

  • 添加权限控制

  • 在eureka中添加jar
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
  • 配置账号密码
spring:
  security:
    user:
      name: admin
      password: 123456
  • 添加配置类
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable();
        super.configure(http);
    }
}
  • 在服务端(客户端也一样)也引入security包
  • 修改service-url写法
eureka:
  client:
    service-url:
#      defaultZone: http://localhost:7001/eureka
      defaultZone: http://admin:123456@localhost:7001/eureka
  • 重启服务,完成

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值