提交 4a0c75b2 编写于 作者: L lvxuhong

客户端整合spring

上级 2f8decaf
# 整合spring
基于spring 5.2.6.RELEASE
- 通过一个注解就可以实现远程接口的调用
@RpcServiceScan("github.javaguide.spring.service")
\ No newline at end of file
...@@ -13,10 +13,12 @@ ...@@ -13,10 +13,12 @@
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.springframework</groupId> <groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId> <artifactId>spring-context</artifactId>
<version>5.2.6.RELEASE</version> <version>5.2.6.RELEASE</version>
<scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
......
...@@ -5,7 +5,7 @@ import github.javaguide.remoting.transport.ClientTransport; ...@@ -5,7 +5,7 @@ import github.javaguide.remoting.transport.ClientTransport;
import github.javaguide.remoting.transport.netty.client.NettyClientTransport; import github.javaguide.remoting.transport.netty.client.NettyClientTransport;
/** /**
* @description: * @description: 简单写一个方法获取代理对象,其实应该在simple框架里面提供一个接口获取代理对象
* @author:lvxuhong * @author:lvxuhong
* @date:2020/6/18 * @date:2020/6/18
*/ */
......
package github.javaguide;
import github.javaguide.spring.annotation.RpcServiceScan;
import org.springframework.context.annotation.Configuration;
/**
* @description:
* @author:lvxuhong
* @date:2020/6/18
*/
@Configuration
@RpcServiceScan("github.javaguide.spring.service")
//@Import(RpcServiceScannerRegistrar.class)
public class Config {
}
package github.javaguide.spring.annotation; package github.javaguide.spring.annotation;
import github.javaguide.spring.rpcservice.Scanner; import github.javaguide.spring.rpcservice.RpcServiceScanner;
import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.context.ResourceLoaderAware; import org.springframework.context.ResourceLoaderAware;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar; import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
...@@ -26,7 +26,7 @@ public class RpcServiceScannerRegistrar implements ImportBeanDefinitionRegistrar ...@@ -26,7 +26,7 @@ public class RpcServiceScannerRegistrar implements ImportBeanDefinitionRegistrar
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) { public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
AnnotationAttributes annoAttrs = AnnotationAttributes.fromMap( AnnotationAttributes annoAttrs = AnnotationAttributes.fromMap(
importingClassMetadata.getAnnotationAttributes(RpcServiceScan.class.getName())); importingClassMetadata.getAnnotationAttributes(RpcServiceScan.class.getName()));
Scanner scanner = new Scanner(registry); RpcServiceScanner scanner = new RpcServiceScanner(registry);
String value = annoAttrs.getString("value"); String value = annoAttrs.getString("value");
if (resourceLoader != null) { if (resourceLoader != null) {
scanner.setResourceLoader(resourceLoader); scanner.setResourceLoader(resourceLoader);
......
...@@ -16,11 +16,11 @@ import java.util.Set; ...@@ -16,11 +16,11 @@ import java.util.Set;
* @author:lvxuhong * @author:lvxuhong
* @date:2020/6/18 * @date:2020/6/18
*/ */
public class Scanner extends ClassPathBeanDefinitionScanner { public class RpcServiceScanner extends ClassPathBeanDefinitionScanner {
private RpcServiceFactoryBean<Object> rpcServiceFactoryBean = new RpcServiceFactoryBean<>(); private RpcServiceFactoryBean<Object> rpcServiceFactoryBean = new RpcServiceFactoryBean<>();
public Scanner(BeanDefinitionRegistry registry) { public RpcServiceScanner(BeanDefinitionRegistry registry) {
super(registry); super(registry);
} }
......
import github.javaguide.Config;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.GenericApplicationContext;
/**
* @description:
* @author:lvxuhong
* @date:2020/6/18
*/
public class ClientTest {
public static void main(String[] args) {
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
applicationContext.register(Config.class);
applicationContext.refresh();
applicationContext.start();
String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames();
for (String s : beanDefinitionNames) {
System.out.println(s);
}
applicationContext.getBean("Service1");
}
}
package github.javaguide; package github.javaguide.spring;
import github.javaguide.spring.annotation.RpcServiceScan;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Configuration;
/** /**
* @description: * @description:
* @author:lvxuhong * @author:lvxuhong
* @date:2020/6/18 * @date:2020/6/19
*/ */
public class ClientTest { public class ClientTest {
public static void main(String[] args) { @Test
public void test() {
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(); AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
applicationContext.register(Config.class); applicationContext.register(TestConfig.class);
applicationContext.refresh(); applicationContext.refresh();
applicationContext.start(); applicationContext.start();
}
@Configuration
@RpcServiceScan("github.javaguide.spring.service")
public static class TestConfig {
} }
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册