首先windows环境下,安装下载nacos,下载地址:https://github.com/alibaba/nacos/releases/tag/1.1.0
解压到任意一个你觉得开心的文件夹,然后启动,如下图
双击启动成功以后如图:
访问:http://127.0.0.1:8848/nacos/ , 输入用户名,密码 nacos,nacos
登录成功的页面
分割线-------------------------------------------------------------------------nacos安装完毕,开始建工程
首先创建一个maven的web-app项目,在此项目下,新建两个项目,一个是服务端项目,一个是客户端项目。新建一个nacos的spring boot服务端项目,nacos-provider,
建完后,pom文件如下
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>0.9.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
application.yml文件配置如下
server:
port: 8762
spring:
application:
name: nacos-provider
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
启动类上面加上注解
然后,创建一个nacos-consumer项目,过程如上,此处略,奉上此consumer项目的application.yml配置文件
server:
port: 8763
spring:
application:
name: nacos-consumer
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
依次启动两个项目,然后登陆http://127.0.0.1:8848/nacos,服务列表会新增你刚刚注册的两个服务,如下图
到此就创建成功了。
继续刚才的项目,使用feign消费服务:
在province项目中,暴露一个controller,如下
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ProviderController {
Logger logger= LoggerFactory.getLogger(ProviderController.class);
@GetMapping("/hi")
public String hi(@RequestParam(value = "name",defaultValue = "forezp",required = false)String name){
return "hi "+name;
}
}
服务端的接口就算是完成了,接着编写消费端的代码。
在consumer项目的pom文件中加入依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
注意注意注意:::: 一定要加上版本号,这个地方因为我之前没加,报错提示下面的interface没注入<version>2.1.0.RELEASE</version>
在consumer工程中新建接口
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient("nacos-provider")
public interface ProviderClient {
@GetMapping("/hi")
String hi(@RequestParam(value = "name", defaultValue = "forezp", required = false) String name);
}
接着新建 controller调用此service
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ConsumerController {
@Autowired
ProviderClient providerClient;
@GetMapping("/hi-feign")
public String hiFeign(){
return providerClient.hi("feign");
}
}
重启工程,在浏览器上访问http://localhost:8763/hi-feign,可以在浏览器上展示正确的响应,这时nacos-consumer调用nacos-provider服务成功。
如果页面报错:
引入以下依赖
<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>18.0</version> </dependency> <dependency> <groupId>com.netflix.archaius</groupId> <artifactId>archaius-core</artifactId> <version>0.7.6</version> </dependency>