> anoyi中的GrpcService和GrpcServiceScan
1. 简述(GrpcService和GrpcServiceScan)
这两个都是个接口
2. 查看GrpcService
~~~
package com.anoyi.grpc.annotation;
import com.anoyi.grpc.constant.SerializeType;
import java.lang.annotation.Documented;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Documented
@Inherited
@Retention(RUNTIME)
public @interface GrpcService {
/**
* 远程服务名
*/
String server() default "";
/**
* 序列化工具实现类
*/
SerializeType[] serialization() default {};
}
~~~
这个类很简单,提供序列化和远程调用的名字而已
3. 查看GrpcServiceScan
~~~
package com.anoyi.grpc.annotation;
import com.anoyi.grpc.config.GrpcAutoConfiguration;
import org.springframework.context.annotation.Import;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Import({GrpcAutoConfiguration.ExternalGrpcServiceScannerRegistrar.class})
public @interface GrpcServiceScan {
/**
* `@GrpcService` 所注解的包扫描路径
*/
String[] packages() default {};
}
~~~
4. 讲解GrpcServiceScan这个类
这个GrpcServiceScan有Import这个接口,这个接口配置了GrpcAutoConfiguration.ExternalGrpcServiceScannerRegistrar.class这个类,下一章节会讲解,
因为import一般配置在spring初始化,或者在spring boot的application中出现,实现bean扫描实例化bean的重写,因为这里配置了packages这个方法,其实这个注解就是实现扫描器的效果,只是在import中的类手动实例化扫描的类并注入到spring容器中而已,很简单的一个接口