《dependencises 》 和 《dependencyManagement》 &&serialVersionUID

136 阅读2分钟

这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战

1.《dependencises 》 和 《dependencyManagement》

 <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2020.0.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

a: 我们都知道依赖由三部分组成,《groupId》,《artifactId》以及版本号组成,但是上面的eureka依赖并未加版本号,当普通《dependencises 》中的依赖中未加版本号时,会自动去《dependencyManagement》寻找,若找不到就会爆红。 b: maven项目只支持单继承,就像java一样,如果你想继承其他的依赖可以通过下面这两个标签。

                <type>pom</type>
                <scope>import</scope>

注,该种写法只能写在 《dependencyManagement》中。

2.当使用《dependencises 》 和 《dependencyManagement》的项目作为父工程时,在微服务的项目中。 继承该项目的子项目会默认继承《dependencises 》 中的所有依赖,而《dependencyManagement》中的依赖并不是全部继承,而是你需要哪个依赖才注入哪个依赖,但需要注意的是不需要申明版本号,版本号和《dependencyManagement》中的依赖的版本号一致。

** serialVersionUID **的意义

serialVersionUID 称为序列化版本号,这个多用于实现了Serializable的类中,适用场景是类的序列化,当我们没有定义这个值得时候虚拟机会根据类的属性生成一个独一无二的序列化版本号。 在反序列化时,虚拟机会根据该变量值去寻找,如果找的到该值反序列化成功,找不到该值反序列化失败。 但是这样有一个劣势,类一旦序列化后我们就不能再修改该类的属性,一旦修改,序列化ID会变化,这会导致后续的反序列化失败。 如果我们手动定义一个序列化ID的话,虚拟机就不会进行计算了。