![JAR search and dependency download from the Maven repository](/logo.png)
org.zodiac.autoconfigure.nacos.naming.NacosNamingAutoConfiguration Maven / Gradle / Ivy
package org.zodiac.autoconfigure.nacos.naming;
import java.util.Map;
import javax.annotation.PostConstruct;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.web.ServerProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.core.env.ConfigurableEnvironment;
import org.zodiac.autoconfigure.application.ApplicationInfoProperties;
import org.zodiac.autoconfigure.bootstrap.condition.ConditionalOnSpringCloudBootstrapDisabled;
import org.zodiac.autoconfigure.nacos.NacosNamingProperties;
import org.zodiac.autoconfigure.nacos.condition.ConditionalOnNacosDiscoveryEnabled;
import org.zodiac.commons.constants.Constants;
import org.zodiac.commons.util.lang.Numbers;
import org.zodiac.core.application.ApplicationInfoMetadata;
import org.zodiac.core.bootstrap.discovery.AppDiscoveryClient;
import org.zodiac.core.bootstrap.discovery.constants.DiscoveryConstants;
import com.alibaba.nacos.api.exception.NacosException;
@SpringBootConfiguration
@ConditionalOnNacosDiscoveryEnabled
@ConditionalOnSpringCloudBootstrapDisabled
@org.zodiac.nacos.client.context.annotation.discovery.EnableNacosDiscoveryClient
//@EnableConfigurationProperties(value = {NacosNamingProperties.class})
@ConditionalOnMissingBean(name = org.zodiac.nacos.base.constants.NacosBeanConstants.DISCOVERY_GLOBAL_NACOS_PROPERTIES_BEAN_NAME)
@ConditionalOnClass(value = {com.alibaba.nacos.api.NacosFactory.class, org.zodiac.nacos.base.NacosAppInstance.class, org.zodiac.nacos.client.context.NacosClientContext.class})
public class NacosNamingAutoConfiguration {
private NacosNamingProperties nacosNamingProperties;
private ApplicationInfoProperties applicationInfoProperties;
public NacosNamingAutoConfiguration(NacosNamingProperties nacosNamingProperties,
ApplicationInfoProperties applicationInfoProperties) {
this.nacosNamingProperties = nacosNamingProperties;
this.applicationInfoProperties = applicationInfoProperties;
}
@Bean
protected com.alibaba.nacos.api.naming.pojo.Instance nacosInstance(NacosNamingProperties nacosNamingProperties) {
com.alibaba.nacos.api.naming.pojo.Instance instanceInfo = nacosNamingProperties.getRegister();
Map metadata = instanceInfo.getMetadata();
metadata.put(ApplicationInfoMetadata.SERVICE_ID, applicationInfoProperties.getName());
metadata.put(ApplicationInfoMetadata.WEIGHT, String.valueOf(applicationInfoProperties.getWeight()));
metadata.put(ApplicationInfoMetadata.MODULE, applicationInfoProperties.getModule());
metadata.put(ApplicationInfoMetadata.CLUSTER, applicationInfoProperties.getCluster());
metadata.put(ApplicationInfoMetadata.ZONE, applicationInfoProperties.getZone());
metadata.put(ApplicationInfoMetadata.REGION, applicationInfoProperties.getRegion());
metadata.put(ApplicationInfoMetadata.ENV_TYPE, applicationInfoProperties.getEnvType());
metadata.put(ApplicationInfoMetadata.INSTANCE_ID, instanceInfo.getInstanceId());
metadata.put(ApplicationInfoMetadata.VERSION, applicationInfoProperties.getVersion());
metadata.put(ApplicationInfoMetadata.HOST, applicationInfoProperties.getHost());
metadata.put(ApplicationInfoMetadata.IP_ADDRESS, applicationInfoProperties.getIpAddress());
/*配置初始化的元数据放入实例。*/
metadata.putAll(nacosNamingProperties.getMetadata());
return nacosNamingProperties.getRegister();
}
@Bean
@ConditionalOnMissingBean
protected org.zodiac.nacos.client.naming.NacosNamingAutoRegister namingAutoRegister(NacosNamingProperties nacosNamingProperties,
ConfigurableEnvironment environment, ApplicationInfoProperties applicationInfoProperties) throws NacosException {
return new org.zodiac.nacos.client.naming.NacosNamingAutoRegister(nacosNamingProperties, environment);
}
@Bean
@ConditionalOnMissingBean
protected org.zodiac.nacos.client.naming.NacosNamingAutoDeregister namingAutoDeregister(NacosNamingProperties nacosNamingProperties,
ServerProperties serverProperties, ApplicationInfoProperties applicationInfoProperties) {
return new org.zodiac.nacos.client.naming.NacosNamingAutoDeregister(nacosNamingProperties,
Numbers.getOrDefault(serverProperties.getPort(), Constants.Spring.DEFAULT_SERVER_PORT_NUMBER));
}
@Bean
@ConditionalOnMissingBean
protected org.zodiac.nacos.client.naming.NacosNamingClientService nacosNamingClientService(NacosNamingProperties nacosNamingProperties,
ConfigurableEnvironment environment) throws com.alibaba.nacos.api.exception.NacosException {
com.alibaba.nacos.api.naming.NamingService namingService = org.zodiac.nacos.base.util.NacosUtil.createNamingService(nacosNamingProperties, environment);
com.alibaba.nacos.api.naming.NamingMaintainService namingMaintainService = org.zodiac.nacos.base.util.NacosUtil.createNamingMaintainService(nacosNamingProperties, environment);
return new org.zodiac.nacos.client.naming.DefaultNacosNamingClientService(nacosNamingProperties, namingService, namingMaintainService);
}
// @Bean
// protected NacosNamingServiceManager nacosNamingServiceManager(NacosNamingProperties nacosNamingProperties) {
// return new NacosNamingServiceManager(nacosNamingProperties);
// }
@Bean(name = DiscoveryConstants.DISCOVERY_CLIENT_BEAN_NAME)
protected AppDiscoveryClient discoveryClient(ApplicationInfoProperties applicationInfoProperties,
NacosNamingProperties nacosNamingProperties, org.zodiac.nacos.client.naming.NacosNamingClientService nacosNamingClientService) {
return new org.zodiac.nacos.client.naming.NacosAppDiscoveryClient(applicationInfoProperties, nacosNamingProperties,
nacosNamingClientService);
}
@Bean(name = DiscoveryConstants.DISCOVERY_APP_INSTANCE_BEAN_NAME)
protected org.zodiac.nacos.base.NacosAppInstance discoveryAppInstance(ApplicationInfoProperties applicationInfoProperties,
com.alibaba.nacos.api.naming.pojo.Instance nacosInstance) {
return new org.zodiac.nacos.base.NacosAppInstance(applicationInfoProperties, nacosNamingProperties.getRegister().getGroup(),
nacosInstance);
}
@Bean
protected org.zodiac.nacos.base.NacosAppContextLoader nacosAppContextLoader(org.zodiac.nacos.base.NacosAppInstance nacosAppInstance) {
return new org.zodiac.nacos.base.NacosAppContextLoader(nacosAppInstance);
}
@PostConstruct
public void init() {
if (nacosNamingProperties.getClusterName() == null)
/*默认使用应用的集群配置。*/
nacosNamingProperties.setClusterName(applicationInfoProperties.getCluster());
if (nacosNamingProperties.getRegister().getGroup() == null)
/*默认使用应用的分组。*/
nacosNamingProperties.setClusterName(applicationInfoProperties.getGroup());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy