> 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容器中而已,很簡單的一個接口