提交 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 @@
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.6.RELEASE</version>
<scope>provided</scope>
</dependency>
<dependency>
......
......@@ -5,7 +5,7 @@ import github.javaguide.remoting.transport.ClientTransport;
import github.javaguide.remoting.transport.netty.client.NettyClientTransport;
/**
* @description:
* @description: 简单写一个方法获取代理对象,其实应该在simple框架里面提供一个接口获取代理对象
* @author:lvxuhong
* @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;
import github.javaguide.spring.rpcservice.Scanner;
import github.javaguide.spring.rpcservice.RpcServiceScanner;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.context.ResourceLoaderAware;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
......@@ -26,7 +26,7 @@ public class RpcServiceScannerRegistrar implements ImportBeanDefinitionRegistrar
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
AnnotationAttributes annoAttrs = AnnotationAttributes.fromMap(
importingClassMetadata.getAnnotationAttributes(RpcServiceScan.class.getName()));
Scanner scanner = new Scanner(registry);
RpcServiceScanner scanner = new RpcServiceScanner(registry);
String value = annoAttrs.getString("value");
if (resourceLoader != null) {
scanner.setResourceLoader(resourceLoader);
......
......@@ -16,11 +16,11 @@ import java.util.Set;
* @author:lvxuhong
* @date:2020/6/18
*/
public class Scanner extends ClassPathBeanDefinitionScanner {
public class RpcServiceScanner extends ClassPathBeanDefinitionScanner {
private RpcServiceFactoryBean<Object> rpcServiceFactoryBean = new RpcServiceFactoryBean<>();
public Scanner(BeanDefinitionRegistry registry) {
public RpcServiceScanner(BeanDefinitionRegistry 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.Configuration;
/**
* @description:
* @author:lvxuhong
* @date:2020/6/18
* @date:2020/6/19
*/
public class ClientTest {
public static void main(String[] args) {
@Test
public void test() {
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
applicationContext.register(Config.class);
applicationContext.register(TestConfig.class);
applicationContext.refresh();
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.
先完成此消息的编辑!
想要评论请 注册