1
0
mirror of https://gitee.com/mirrors/Spring-Cloud-Alibaba.git synced 2021-06-26 13:25:11 +08:00

add NacosRegistrationCustomizer.java

This commit is contained in:
如梦技术 2020-05-30 17:07:43 +08:00
parent 213bf2a912
commit acd7681368
3 changed files with 52 additions and 5 deletions

View File

@ -17,6 +17,7 @@
package com.alibaba.cloud.nacos.registry;
import java.net.URI;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
@ -62,8 +63,11 @@ public class NacosRegistration implements Registration, ServiceInstance {
private ApplicationContext context;
private List<NacosRegistrationCustomizer> registrationCustomizers;
public NacosRegistration(NacosDiscoveryProperties nacosDiscoveryProperties,
ApplicationContext context) {
ApplicationContext context,
List<NacosRegistrationCustomizer> registrationCustomizers) {
this.nacosDiscoveryProperties = nacosDiscoveryProperties;
this.context = context;
}
@ -105,6 +109,15 @@ public class NacosRegistration implements Registration, ServiceInstance {
metadata.put(PreservedMetadataKeys.IP_DELETE_TIMEOUT,
nacosDiscoveryProperties.getIpDeleteTimeout().toString());
}
customize(registrationCustomizers,this);
}
private static void customize(List<NacosRegistrationCustomizer> registrationCustomizers, NacosRegistration registration) {
if (registrationCustomizers != null) {
for (NacosRegistrationCustomizer customizer : registrationCustomizers) {
customizer.customize(registration);
}
}
}
@Override

View File

@ -0,0 +1,31 @@
/*
* Copyright 2013-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.alibaba.cloud.nacos.registry;
/**
* @author L.cm
*/
public interface NacosRegistrationCustomizer {
/**
* customize NacosRegistration
*
* @param registration NacosRegistration
*/
void customize(NacosRegistration registration);
}

View File

@ -20,6 +20,7 @@ import com.alibaba.cloud.nacos.ConditionalOnNacosDiscoveryEnabled;
import com.alibaba.cloud.nacos.NacosDiscoveryProperties;
import com.alibaba.cloud.nacos.discovery.NacosDiscoveryAutoConfiguration;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@ -31,6 +32,8 @@ import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.List;
/**
* @author xiaojing
* @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>
@ -53,10 +56,10 @@ public class NacosServiceRegistryAutoConfiguration {
@Bean
@ConditionalOnBean(AutoServiceRegistrationProperties.class)
public NacosRegistration nacosRegistration(
NacosDiscoveryProperties nacosDiscoveryProperties,
ApplicationContext context) {
return new NacosRegistration(nacosDiscoveryProperties, context);
public NacosRegistration nacosRegistration(NacosDiscoveryProperties nacosDiscoveryProperties,
ApplicationContext context,
ObjectProvider<List<NacosRegistrationCustomizer>> registrationCustomizers) {
return new NacosRegistration(nacosDiscoveryProperties, context, registrationCustomizers.getIfAvailable());
}
@Bean