一、介绍
说到微服务,大家能想到肯定有注册中心这一项,那么传统的单体应用,也就是MVC项目需要上注册中心,以及作为提供者和消费者的话,那么就需要做一系列改造配置,接下来跟我一起进入MVC上NACOS注册、配置中心服务组件的开发吧~~
二、组件开发
2.1 添加pom依赖
新建一个工程,添加以下pom依赖:
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-spring-context</artifactId>
<version>0.3.6</version>
</dependency>
2.2 创建一个服务发现的类
@PropertySource("classpath:nacos-application.properties")
指定读取的配置文件。
@EnableNacosDiscovery(globalProperties = @NacosProperties)
指定注册中心地址,通过配置文件中的nacos.server-addr读取。
@EnableNacosConfig(globalProperties = @NacosProperties)
指定配置中心地址,通过配置文件中的nacos.server-addr读取。
@NacosPropertySource(dataId = "common.properties", autoRefreshed = true)
指定应用可以读取nacos配置中心的common.properties的配置文件。
@Configuration
@PropertySource("classpath:nacos-application.properties")
@EnableNacosDiscovery(globalProperties = @NacosProperties)
@EnableNacosConfig(globalProperties = @NacosProperties)
@NacosPropertySource(dataId = "common.properties", autoRefreshed = true)
public class NacosDiscovery {
//获取配置文件里服务端口
@Value("${server.port}")
private int serverPort;
//获取配置文件里服务名
@Value("${spring.application.name}")
private String applicationName;
// 注入 Nacos 的 NamingService 实例
@NacosInjected
private NamingService namingService;
@PostConstruct
public void registerInstance() throws Exception {
// 通过Nacos Open API 向 Nacos Server 注册一个名称为applicationName的服务
namingService.registerInstance(applicationName, NetworkUtil.getLocalIp(), serverPort);
}
}
2.3 创建一个获取本机ip的类
因为往nacos注册时需要将应用ip注册上去,因此需要一个这个类来获取本机ip地址
/**
* @ClassName: NetworkUtil
* @Description: 获取本机ip
* @Author daiyating
* @Date 2020/9/10 0010
* @Version 1.0
*/
public final class NetworkUtil {
public static String getLocalIp() throws Exception{
InetAddress inetAddress=InetAddress.getLocalHost();
String ip=inetAddress.getHostAddress().