Skip to content

Commit 6ed3cc7

Browse files
authored
Add XRpcServiceBean (#17)
* update XRpcServiceBean * update
1 parent b65dc26 commit 6ed3cc7

File tree

2 files changed

+25
-16
lines changed

2 files changed

+25
-16
lines changed

x-rpc-spring-boot-starter/src/main/java/io/github/xinfra/lab/rpc/spring/bean/XRpcServiceAnnotationPostProcessor.java

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*/
1717
package io.github.xinfra.lab.rpc.spring.bean;
1818

19+
import io.github.xinfra.lab.rpc.config.ExporterConfig;
1920
import io.github.xinfra.lab.rpc.spring.annotation.XRpcService;
2021
import java.util.Collection;
2122
import java.util.Set;
@@ -25,7 +26,6 @@
2526
import org.springframework.beans.factory.BeanClassLoaderAware;
2627
import org.springframework.beans.factory.config.BeanDefinitionHolder;
2728
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
28-
import org.springframework.beans.factory.support.AbstractBeanDefinition;
2929
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
3030
import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
3131
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
@@ -106,14 +106,12 @@ private void scanXRpcServiceBeans(BeanDefinitionRegistry registry) {
106106
.flatMap(Collection::stream)
107107
.collect(Collectors.toSet());
108108
for (BeanDefinitionHolder beanDefinitionHolder : beanDefinitionHolders) {
109-
registerExporterConfigBeans(registry, beanDefinitionHolder);
109+
registerXRpcServiceBean(registry, beanDefinitionHolder);
110110
}
111111
}
112112

113-
private void registerExporterConfigBeans(
113+
private void registerXRpcServiceBean(
114114
BeanDefinitionRegistry registry, BeanDefinitionHolder rpcServiceBeanDefinitionHolder) {
115-
BeanDefinitionBuilder builder =
116-
BeanDefinitionBuilder.rootBeanDefinition(ExporterConfigBean.class);
117115
// get service interface
118116
Class<?> beanClass =
119117
ClassUtils.resolveClassName(
@@ -123,12 +121,25 @@ private void registerExporterConfigBeans(
123121
log.warn("No interfaces found for class: {}", beanClass);
124122
throw new IllegalArgumentException("No interfaces found for class: " + beanClass);
125123
}
126-
builder.addConstructorArgValue(allInterfaces[0]);
127-
builder.addPropertyReference("providerBoostrap", "providerBoostrap");
128-
builder.addPropertyReference("serviceImpl", rpcServiceBeanDefinitionHolder.getBeanName());
124+
Class<?> serviceInterface = allInterfaces[0];
125+
126+
BeanDefinitionBuilder xRpcServiceBeanBuilder =
127+
BeanDefinitionBuilder.rootBeanDefinition(XRpcServiceBean.class);
128+
xRpcServiceBeanBuilder.addPropertyReference("providerBoostrap", "providerBoostrap");
129+
129130
// todo resolve @XRpcService attrs
131+
BeanDefinitionBuilder exporterConfigBuilder =
132+
BeanDefinitionBuilder.rootBeanDefinition(ExporterConfig.class);
133+
exporterConfigBuilder.addConstructorArgValue(serviceInterface);
134+
exporterConfigBuilder.addPropertyReference(
135+
"serviceImpl", rpcServiceBeanDefinitionHolder.getBeanName());
136+
String exporterConfigBeanName =
137+
BeanDefinitionReaderUtils.registerWithGeneratedName(
138+
exporterConfigBuilder.getBeanDefinition(), registry);
139+
140+
xRpcServiceBeanBuilder.addPropertyReference("exporterConfig", exporterConfigBeanName);
130141

131-
AbstractBeanDefinition beanDefinition = builder.getBeanDefinition();
132-
BeanDefinitionReaderUtils.registerWithGeneratedName(beanDefinition, registry);
142+
BeanDefinitionReaderUtils.registerWithGeneratedName(
143+
xRpcServiceBeanBuilder.getBeanDefinition(), registry);
133144
}
134145
}

x-rpc-spring-boot-starter/src/main/java/io/github/xinfra/lab/rpc/spring/bean/ExporterConfigBean.java renamed to x-rpc-spring-boot-starter/src/main/java/io/github/xinfra/lab/rpc/spring/bean/XRpcServiceBean.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,15 @@
2424
import org.springframework.beans.factory.InitializingBean;
2525

2626
@Slf4j
27-
public class ExporterConfigBean extends ExporterConfig implements InitializingBean {
27+
public class XRpcServiceBean implements InitializingBean {
2828

2929
@Getter @Setter private ProviderBoostrap providerBoostrap;
3030

31-
public ExporterConfigBean(Class<?> serviceInterfaceClass) {
32-
super(serviceInterfaceClass);
33-
}
31+
@Getter @Setter private ExporterConfig<?> exporterConfig;
3432

3533
@Override
3634
public void afterPropertiesSet() throws Exception {
37-
providerBoostrap.export(this);
38-
log.info("XRpc export service: {}", getServiceInterfaceName());
35+
providerBoostrap.export(exporterConfig);
36+
log.info("XRpc export service: {}", exporterConfig.getServiceInterfaceName());
3937
}
4038
}

0 commit comments

Comments
 (0)