mirror of
https://gitee.com/mirrors/Spring-Cloud-Alibaba.git
synced 2021-06-26 13:25:11 +08:00
Polish spring-cloud-incubator/spring-cloud-alibaba#559 : Resolve BeanCurrentlyInCreationException issue
This commit is contained in:
parent
aef27e885e
commit
0a9930c8c2
@ -56,7 +56,7 @@ import java.util.function.Supplier;
|
|||||||
public class DubboMetadataAutoConfiguration {
|
public class DubboMetadataAutoConfiguration {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private DubboServiceMetadataRepository dubboServiceMetadataRepository;
|
private ObjectProvider<DubboServiceMetadataRepository> dubboServiceMetadataRepository;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private MetadataResolver metadataResolver;
|
private MetadataResolver metadataResolver;
|
||||||
@ -100,7 +100,7 @@ public class DubboMetadataAutoConfiguration {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void publishServiceRestMetadata(ServiceBean serviceBean) {
|
private void publishServiceRestMetadata(ServiceBean serviceBean) {
|
||||||
dubboServiceMetadataRepository.publishServiceRestMetadata(metadataResolver.resolveServiceRestMetadata(serviceBean));
|
dubboServiceMetadataRepository.getIfAvailable().publishServiceRestMetadata(metadataResolver.resolveServiceRestMetadata(serviceBean));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void unExportDubboMetadataConfigService() {
|
private void unExportDubboMetadataConfigService() {
|
||||||
|
@ -23,6 +23,7 @@ import org.apache.dubbo.config.ServiceConfig;
|
|||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.ObjectProvider;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@ -45,7 +46,7 @@ public class DubboMetadataServiceExporter {
|
|||||||
private ApplicationConfig applicationConfig;
|
private ApplicationConfig applicationConfig;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private DubboMetadataService dubboMetadataService;
|
private ObjectProvider<DubboMetadataService> dubboMetadataService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private Supplier<ProtocolConfig> protocolConfigSupplier;
|
private Supplier<ProtocolConfig> protocolConfigSupplier;
|
||||||
@ -74,7 +75,7 @@ public class DubboMetadataServiceExporter {
|
|||||||
serviceConfig.setVersion(DubboMetadataService.VERSION);
|
serviceConfig.setVersion(DubboMetadataService.VERSION);
|
||||||
// Use current Spring application name as the Dubbo Service group
|
// Use current Spring application name as the Dubbo Service group
|
||||||
serviceConfig.setGroup(currentApplicationName);
|
serviceConfig.setGroup(currentApplicationName);
|
||||||
serviceConfig.setRef(dubboMetadataService);
|
serviceConfig.setRef(dubboMetadataService.getIfAvailable());
|
||||||
serviceConfig.setApplication(applicationConfig);
|
serviceConfig.setApplication(applicationConfig);
|
||||||
serviceConfig.setProtocol(protocolConfigSupplier.get());
|
serviceConfig.setProtocol(protocolConfigSupplier.get());
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@ import org.apache.dubbo.common.URL;
|
|||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.ObjectProvider;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.cloud.alibaba.dubbo.metadata.ServiceRestMetadata;
|
import org.springframework.cloud.alibaba.dubbo.metadata.ServiceRestMetadata;
|
||||||
import org.springframework.cloud.alibaba.dubbo.metadata.repository.DubboServiceMetadataRepository;
|
import org.springframework.cloud.alibaba.dubbo.metadata.repository.DubboServiceMetadataRepository;
|
||||||
@ -44,14 +45,14 @@ public class IntrospectiveDubboMetadataService implements DubboMetadataService {
|
|||||||
private final Logger logger = LoggerFactory.getLogger(getClass());
|
private final Logger logger = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private DubboServiceMetadataRepository dubboServiceMetadataRepository;
|
private ObjectProvider<DubboServiceMetadataRepository> dubboServiceMetadataRepository;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private JSONUtils jsonUtils;
|
private JSONUtils jsonUtils;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getServiceRestMetadata() {
|
public String getServiceRestMetadata() {
|
||||||
Set<ServiceRestMetadata> serviceRestMetadata = dubboServiceMetadataRepository.getServiceRestMetadata();
|
Set<ServiceRestMetadata> serviceRestMetadata = getRepository().getServiceRestMetadata();
|
||||||
String serviceRestMetadataJsonConfig = null;
|
String serviceRestMetadataJsonConfig = null;
|
||||||
if (!isEmpty(serviceRestMetadata)) {
|
if (!isEmpty(serviceRestMetadata)) {
|
||||||
serviceRestMetadataJsonConfig = jsonUtils.toJSON(serviceRestMetadata);
|
serviceRestMetadataJsonConfig = jsonUtils.toJSON(serviceRestMetadata);
|
||||||
@ -61,12 +62,12 @@ public class IntrospectiveDubboMetadataService implements DubboMetadataService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<String> getAllServiceKeys() {
|
public Set<String> getAllServiceKeys() {
|
||||||
return dubboServiceMetadataRepository.getAllServiceKeys();
|
return getRepository().getAllServiceKeys();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, String> getAllExportedURLs() {
|
public Map<String, String> getAllExportedURLs() {
|
||||||
Map<String, List<URL>> allExportedUrls = dubboServiceMetadataRepository.getAllExportedUrls();
|
Map<String, List<URL>> allExportedUrls = getRepository().getAllExportedUrls();
|
||||||
if (isEmpty(allExportedUrls)) {
|
if (isEmpty(allExportedUrls)) {
|
||||||
if (logger.isDebugEnabled()) {
|
if (logger.isDebugEnabled()) {
|
||||||
logger.debug("There is no registered URL.");
|
logger.debug("There is no registered URL.");
|
||||||
@ -85,7 +86,11 @@ public class IntrospectiveDubboMetadataService implements DubboMetadataService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getExportedURLs(String serviceInterface, String group, String version) {
|
public String getExportedURLs(String serviceInterface, String group, String version) {
|
||||||
List<URL> urls = dubboServiceMetadataRepository.getExportedURLs(serviceInterface, group, version);
|
List<URL> urls = getRepository().getExportedURLs(serviceInterface, group, version);
|
||||||
return jsonUtils.toJSON(urls);
|
return jsonUtils.toJSON(urls);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private DubboServiceMetadataRepository getRepository() {
|
||||||
|
return dubboServiceMetadataRepository.getIfAvailable();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user