搭建springcloud项目

Posted 蚂蚁队长V

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搭建springcloud项目相关的知识,希望对你有一定的参考价值。

【springcloud】简单创建一个springcloud项目

 

 

简单的springcloud搭建

注册中心:eureka

接口服务:server

web服务:web

网关:zuul

配置中心:config

pom参数统一管理:common

 

1、创建一个空的maven项目为springcloud

 

 

  

2、修改pom.xml文件

 

 pom.xml文件

 

3、创建注册中心Eureka

 

  

 3.1、配置注册中心eureka的配置文件application.yml

 1 server:
 2   port: 9900
 3 
 4 eureka:
 5   instance:
 6     hostname: localhost
 7   client:
 8     #     声明是否将自己的信息注册到 Eureka 服务器上
 9     registerWithEureka: false
10     #     是否到 Eureka 服务器中抓取注册信息
11     fetchRegistry: false
12     serviceUrl:
13       defaultZone: http://@eureka.user.name@:@eureka.user.password@@${eureka.instance.hostname}:${server.port}/eureka/
14 
15 
16 spring:
17   application:
18     name: eurka-service
19   security:
20     user:
21       name: @eureka.user.name@
22       password: @eureka.user.password@

 

 

 eureka的pom.xml文件

3.2、添加@EnableEurekaServer注解

3.3、启动注册中心

 

注:如果启动报读取不了yml文件,可能是编码问题。把编码设置成utf-8就可以了。

 

3.4、访问

http://localhost:9900/

 

 注:如果启动后登陆不了,可以试试添加配置类(必须,不然其他服务发现不了注册中心)

 1 package com.xiaostudy.eureka.config;
 2 
 3 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 4 import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
 5 import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
 6 
 7 @EnableWebSecurity
 8 public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
 9 
10     @Override
11     protected void configure(HttpSecurity http) throws Exception {
12         //关闭csrf
13         http.csrf().disable();
14         super.configure(http);
15     }
16 }

 

4、创建一个server模块,模拟发布接口

 

4.1、添加注解@EnableDiscoveryClient和@EnableFeignClients

 server的yml文件

 1 server:
 2   port: 9901
 3 
 4 eureka:
 5   instance:
 6     preferIpAddress: true
 7     instance-id: ${spring.cloud.client.ip-address}:${server.port}
 8   client:
 9     serviceUrl:
10       defaultZone: http://@eureka.user.name@:@eureka.user.password@@localhost:9900/eureka/
11 
12 spring:
13   application:
14     name: server-service
15   cloud:
16     loadbalancer:
17       retry:
18         enabled: false

 

 

 server的pom.xml文件

 

4.2、创建services及实现类、controller和接口

services接口

package com.xiaostudy.server.services;

public interface TestServices {

    public String get(String name);
}

services实现类

package com.xiaostudy.server.services.impl;

import com.xiaostudy.server.services.TestServices;
import org.springframework.stereotype.Service;

@Service
public class TestServicesImpl implements TestServices {

    @Override
    public String get(String name) {
        return "参数name:" + name;
    }
}

controller

package com.xiaostudy.server.controller;

import com.xiaostudy.server.services.TestServices;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/test")
public class TestController {

    @Autowired
    private TestServices testServices;

    @RequestMapping("/get")
    public String get(String name) {
        return testServices.get(name);
    }
}

接口

package com.xiaostudy.server.apis;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;

@FeignClient(name = "server-service", contextId = "TestServicesApis")
public interface TestServicesApis {

    @RequestMapping("/test/get")
    public String get(String name);
}

 

4.3、启动server

 

 

 

5、添加一个web模块,通过接口调用服务

 

 

 web的pom.xml文件

 

web的配置文件application.yml

server:
  port: 9902

eureka:
  instance:
    preferIpAddress: true
    instance-id: ${spring.cloud.client.ip-address}:${server.port}
  client:
    serviceUrl:
      defaultZone: http://@eureka.user.name@:@eureka.user.password@@localhost:9900/eureka/

spring:
  application:
    name: web-service
  cloud:
    loadbalancer:
      retry:
        enabled: false

 

 web的controller

package com.xiaostudy.web.controller;

import com.xiaostudy.server.apis.TestServicesApis;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/test")
public class TestWebController {

    @Autowired
    private TestServicesApis testServicesApis;

    @RequestMapping("/getTest")
    public String getTest() {
        return testServicesApis.get("通过web调用的");
    }
}

启动web

 

 

 6、添加网关zuul

 

 

 zuul的pom.xml文件

 

 

 zuul的application.yml文件

添加注解@EnableDiscoveryClient和@EnableZuulProxy

 

 启动zuul

 

 

 

 

7、添加配置中心

 

 

 

 config的application.yml

server:
  port: 9904

eureka:
  instance:
    preferIpAddress: true
    instance-id: ${spring.cloud.client.ip-address}:${server.port}
  client:
    serviceUrl:
      defaultZone: http://@eureka.user.name@:@eureka.user.password@@localhost:9900/eureka/

spring:
  application:
    name: config-service
  cloud:
    loadbalancer:
      retry:
        enabled: false
  profiles:
    active: native

 

 添加注解@EnableDiscoveryClient和@EnableConfigServer

 

 

 

 

或者

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-client</artifactId>
</dependency>

 

 

 

 

 web的bootstrap.yml文件

启动顺序,注册中心(eureka)、配置中心(config)、server、web、zuul(后面三个没有顺序)

 

 

 

 

 

8、添加一个common模块,用于各个模块的父模块,统一管理pom.xml的参数配置

 随便找一个模块的来复制

 

 

 

 common的pom.xml文件

 

以上是关于搭建springcloud项目的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloud-2.0(3. SpringCloud 环境搭建)

springcloud微服务架构搭建过程

记一次搭建简单cloudconsul项目错误

搭建springCloud项目

快速搭建第一个SpringCloud程序

SpringCloud系列四:Eureka 服务发现框架(定义 Eureka 服务端Eureka 服务信息Eureka 发现管理Eureka 安全配置Eureka-HA(高可用) 机制Eur(代码片段