Nacos Spring Cloud
项目地址:https://github.com/alibaba/nacos/
下载地址:https://github.com/alibaba/nacos/releases
文档地址:https://nacos.io/en-us/docs/quick-start-spring-cloud.html
unzip nacos-server-1.0.0.zip
cd nacos/conf
vim application.properties
server.servlet.contextPath=/nacos
server.port=8848
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=123456
sh startup.sh -m standalone
默认账号/密码:nacos/nacos
Configuration Service && Service Discovery
1.添加依赖
Version 2.1.x.RELEASE 适配 Spring Boot 2.1.x
Version 2.0.x.RELEASE 适配 Spring Boot 2.0.x
Version 1.5.x.RELEASE 适配 Spring Boot 1.5.x
<properties>
<spring-boot.version>2.1.13.RELEASE</spring-boot.version>
<alibaba-cloud.version>2.1.0.RELEASE</alibaba-cloud.version>
<spring-cloud.version>Greenwich.SR2</spring-cloud.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${alibaba-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.bootstrap.properties
server.port=7002
spring.application.name=knowledge-graph-financial
spring.cloud.nacos.config.server-addr=10.252.202.53:8848
spring.cloud.nacos.discovery.server-addr=10.252.202.53:8848
其他配置
spring.cloud.nacos.config.namespace=6d4bacd9-cbca-411b-876e-a459cca56d38
spring.cloud.nacos.config.sharedDataids=mysql.yml,redis.yml,printlog.yml,es.yml
spring.cloud.nacos.config.refreshableDataids=mysql.yml,redis.yml,es.yml
spring.cloud.nacos.discovery.namespace=6d4bacd9-cbca-411b-876e-a459cca56d38
** dataId格式
${prefix}-${spring.profiles.active}.${file-extension}
prefix 默认是 spring.application.name
3.启动类
package com.grgbanking.financial;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.context.config.annotation.RefreshScope;
@SpringBootApplication
@RefreshScope
@EnableDiscoveryClient
public class FinancinalApplication {
public static void main(String[] args) {
SpringApplication springApplication = new SpringApplication(FinancinalApplication.class);
springApplication.run(args);
}
}
4.客户端消费
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
spring:
cloud:
nacos:
discovery:
server-addr: 10.252.202.53:8848
#feign
feign:
hystrix:
enabled: false
okhttp:
enabled: true
httpclient:
enabled: false
@SpringBootApplication
@EnableFeignClients
@EnableDiscoveryClient
public class BaikeInfoApplication {
public static void main(String[] args) {
SpringApplication springApplication = new SpringApplication(BaikeInfoApplication.class);
springApplication.run(args);
}
}
@FeignClient(value = "knowledge-graph-financial")
public interface CloudFinancialClient {
@GetMapping(value = "/gzkg/financial/dateRange")
Result getDateRange();
@GetMapping(value = "/gzkg/financial/organization/{date}/list")
List<OrganizationVO> selectOrganization(@PathVariable("date") Integer date);
}
@RestController
@RequestMapping(value = "${mainconfig.api.prefix}/organization")
public class OrganizationController extends SuperController {
@Autowired
private CloudFinancialClient financialClient;
/**
* 获取第一级企业
* @return
*/
@RequestMapping(value = "/getFirstLevelOrganization", method = RequestMethod.GET)
public Result getFirstLevelOrganization() {
Result dateResult= financialClient.getDateRange();
Integer date=null;
if(dateResult!=null && dateResult.getData()!=null){
date=Integer.parseInt(((Map)dateResult.getData()).get("maxMonth").toString());
}
if (date!=null){
List<OrganizationVO> orgList= financialClient.selectOrganization(date);
return ResultUtil.success(orgList.stream().filter(t->t.getLevel()<=3 && t.getCode().equals(t.getEnterpriseId().toString())).collect(Collectors.toList()));
}else {
throw CustomException.create("接口调用失败");
}
}
}