Dubbo学习总结
无涯子 2023/4/27
# 1.关于@EnableDubbo
启用Dubbo组件的Spring Bean,等同于@DubboComponentScan和@EnableDubboConfig作用,开始于Dubbo2.5.8版本。
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
@EnableDubboConfig
@DubboComponentScan
public @interface EnableDubbo {
@AliasFor(annotation = DubboComponentScan.class, attribute = "basePackages")
String[] scanBasePackages() default {};
@AliasFor(annotation = DubboComponentScan.class, attribute = "basePackageClasses")
Class<?>[] scanBasePackageClasses() default {};
@AliasFor(annotation = EnableDubboConfig.class, attribute = "multiple")
boolean multipleConfig() default true;
}
# 1.1 关于元注解
# 1.1.1元注解@Target
主要作用是描述注解使用的范围,注解可以使用在packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在Annotation类型的声明中使用了target可更加明晰其修饰的目标。
# 1.1.2元注解@Retention
主要用来描述注解能够存在多长时间,主要有三种取值:source、class、runtime分别对应源代码,class文件,字节码文件。三种取值的含义是source说明注解主要在源代码层面起作用,在被编译成class文件时候不会被保留;class在编译成calss文件时候会被保留,但是在JVM加载到内存,变成字节码的时候不会被保留,也是默认情况;runtime是在字节码时候也会保留。生命周期长短分别是:source<class<runtime。
# 1.1.3注解@Inherited
主要用来修饰注解,如果一个类用上了@Inherited修饰的注解,那么其子类也会继承这个注解,接口用上个@Inherited修饰的注解,其实现类不会继承这个注解,父类的方法用了@Inherited修饰的注解,子类也不会继承这个注解。