public void init()

in spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/NacosDiscoveryProperties.java [255:329]


	public void init() throws Exception {

		metadata.put(PreservedMetadataKeys.REGISTER_SOURCE, "SPRING_CLOUD");
		if (secure) {
			metadata.put("secure", "true");
		}

		serverAddr = Objects.toString(serverAddr, "");
		if (serverAddr.endsWith("/")) {
			serverAddr = serverAddr.substring(0, serverAddr.length() - 1);
		}
		endpoint = Objects.toString(endpoint, "");
		namespace = Objects.toString(namespace, "");
		logName = Objects.toString(logName, "");

		if (StringUtils.isEmpty(ip)) {
			// traversing network interfaces if didn't specify an interface
			if (StringUtils.isEmpty(networkInterface)) {
				if (ipType == null) {
					ip = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
					String ipv6Addr = inetIPv6Utils.findIPv6Address();
					metadata.put(IPV6, ipv6Addr);
					if (ipv6Addr != null) {
						metadata.put(IPV6, ipv6Addr);
					}
				}
				else if (IPV4.equalsIgnoreCase(ipType)) {
					ip = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
				}
				else if (IPV6.equalsIgnoreCase(ipType)) {
					ip = inetIPv6Utils.findIPv6Address();
					if (StringUtils.isEmpty(ip)) {
						log.warn("There is no available IPv6 found. Spring Cloud Alibaba will automatically find IPv4.");
						ip = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
					}
				}
				else {
					throw new IllegalArgumentException(
							"please checking the type of IP " + ipType);
				}
			}
			else {
				NetworkInterface netInterface = NetworkInterface
						.getByName(networkInterface);
				if (null == netInterface) {
					throw new IllegalArgumentException(
							"no such interface " + networkInterface);
				}

				Enumeration<InetAddress> inetAddress = netInterface.getInetAddresses();
				while (inetAddress.hasMoreElements()) {
					InetAddress currentAddress = inetAddress.nextElement();
					if (currentAddress instanceof Inet4Address
							|| currentAddress instanceof Inet6Address
							&& !currentAddress.isLoopbackAddress()) {
						ip = currentAddress.getHostAddress();
						break;
					}
				}

				if (StringUtils.isEmpty(ip)) {
					throw new RuntimeException("cannot find available ip from"
							+ " network interface " + networkInterface);
				}

			}
		}

		this.overrideFromEnv(environment);
		if (nacosServiceManager.isNacosDiscoveryInfoChanged(this)) {
			applicationEventPublisher
					.publishEvent(new NacosDiscoveryInfoChangedEvent(this));
		}
		nacosServiceManager.setNacosDiscoveryProperties(this);
	}