Springboot整合Nacos
父类POM文件:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!-- 打包方式 --> <packaging>pom</packaging> <modules> <module>order</module> <module>stock</module> </modules> <groupId>com.nacos</groupId> <artifactId>vnacos</artifactId> <version>0.0.1-SNAPSHOT</version> <name>vnacos</name> <description>vnacos</description> <properties> <java.version>1.8</java.version> <spring.cloud.alibaba.version>2.2.5.RELEASE</spring.cloud.alibaba.version> <spring.boot.version>2.3.11.RELEASE</spring.boot.version> <spring.cloud.version>Hoxton.SR8</spring.cloud.version> </properties> <!-- 管理依赖版本号 --> <dependencyManagement> <!--Spring Cloud alibaba的版本管理, 通过dependency完成继承--> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring.cloud.alibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!--SpringBoot的版本管理--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>${spring.boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!--Spring Cloud的版本管理--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring.cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!--SpringBoot 基本场景启动--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!--SpringBoot 测试--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- Slf4j --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!-- Swagger2构造RESTful API文档 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.4.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.4.0</version> </dependency> </dependencies> <build> <plugins> </plugins> </build> </project>
模块POM文件:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>vnacos</artifactId> <groupId>com.nacos</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>order</artifactId> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--nacos-服务注册发现--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> </dependencies> </project>
YML文件:
server:
port: 80
spring:
application:
name: order-service # 应用名称 nacos 将名称作为服务名称
cloud:
nacos:
server-addr: 192.168.43.66:8848
discovery:
username: nacos
password: nacos
namespace: public
# namespace: public # 相同特征的服务进行归类分组管理
# ephemeral: false # 默认=true(临时实例) 当服务宕机 超过心跳 就会将实例剔除掉
#永久实例 哪怕宕机了也不会删除实例 当服务宕机 永远不会剔除掉
#group的相同特征的服务进行归类分组管理
#weight: 通常要结合 安装 权重的负载均衡策略, 权重越高分配的流量就越大
#metadata: version=1 可以结合元数据做扩展
#cluster-name: XUSHU
JAVA代码:
启动类:
package com; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.client.RestTemplateBuilder; 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; /** * @author vans on 2022/2/16 18:32 */ /** * 此配 scanBasePackages={"com.netflix.client.config.IClientConfig"} 解决: * Consider defining a bean of type 'com.netflix.client.config.IClientConfig' in your configuration. */@SpringBootApplication(scanBasePackages={"com.netflix.client.config.IClientConfig","com.stock"}) public class VnOrderApplication { public static void main(String[] args) { SpringApplication.run(VnOrderApplication.class,args); } /** * * @param restTemplateBuilder * @return * * @LoadBalanced 定义负载均衡器 * */ @Bean @LoadBalanced public RestTemplate getRestTemplate(RestTemplateBuilder restTemplateBuilder){ RestTemplate restTemplate = restTemplateBuilder.build(); return restTemplate; } }
Controller层:
package com.order.controller; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; /** * @author vans on 2022/2/16 18:13 */ @RestController @RequestMapping("/vn/order") @Slf4j public class OrderController { @Autowired private RestTemplate restTemplate; @ApiOperation(value = "获取所有用户列表", notes = "不需要任何参数") @ApiImplicitParam(name = "", value = "", required = false, dataType = "") @GetMapping public String getOrder() { String message = restTemplate.getForObject("http://stock-service:90/vn/stock", String.class); return message; } }

浙公网安备 33010602011771号