关于Spring配置方面的一点心得(io.spring.platform)
最近在配置Maven项目,也就是使用io.spring.platform来进行管理自己的Spring项目的各种依赖,但是后来的配置过程中发现不简单,因为刚开始我是使用
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.spring.platform</groupId>
<artifactId>platform-bom</artifactId>
<version>Cairo-SR7</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
但是后来总是在启动项那里发现,不是少这个方法就是少那个方法,列举其中的一个错误:springboot项目启动报错Attribute 'proxyBeanMethods' in annotation [org.springframework.
后来在一些小伙伴的讨论中,发现有可能是版本的问题,因为在不同版本可能会有一些方法不存在或者过时废弃的情况出现,导致在索引依赖的时候出现找不到方法的情况。
那个提出问题的小伙伴最后解决了,他是将2.1.4.RELEASE升级为2.2.0.RELEASE 这个回答启发了我,于是我去搜索Cairo-SR7版本的io.spring.platform对应的springBoot版本,结果它对应的是2.0.8.RELEASE,在官方的文档中发现它已经排在最后,原来这个io.spring.platform已经终止研发了,官方决定使用spring-boot-starter来进行包管理
https://spring.io/projects/platform
End of Life
The Platform will reach the end of its supported life on 9 April 2019. Maintenence releases of both the Brussels and Cairo lines will continue to be published up until that time. Users of the Platform are encourage to start using Spring Boot’s dependency management directory, either by using spring-boot-starter-parent as their Maven project’s parent, or by importing the spring-boot-dependencies bom.
翻译:
寿命终止该平台将于2019年4月9日终止其受支持的寿命。Brussels和 Cairo生产线的维护版本将继续发布,直到那时为止。 鼓励平台用户开始使用Spring Boot的依赖项管理目录,方法是将spring-boot-starter-parent用作其Maven项目的父级,或者导入spring-boot-dependencies bom。
于是我开始观看我们一般的spring项目的包依赖的方式,比如:
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/><!-- lookup parent from repository -->
</parent>
<groupId>life.majiang.community</groupId>
<artifactId>community</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>community</name>
<description>Spring Boot community</description>
但是在我使用该方式之后出现了,全部依赖无法找到的情况,我猜测可能一个项目的包管理的方式可能只有一个,我有两个,可能会出现混乱,于是我还是在<dependencyManagement>的标签下面添加spring-boot的依赖管理:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
于是build成功,可以运行。
但是你在打开右边栏的Maven 的时候你会发现,你的部分依赖会报 unknow,也就是找不到的错误,这个其实是一种思维定势,在之前io.spring.platform管理的springboot 1.X时代的确不用管理这些依赖,只要写上依赖的名字,然后io.spring.platform会自动配置版本来达到兼容,但是现在不是用这个方式之后,显然这种方式已经不在适用了,对于一些依赖你要明确它的版本,有些则可以不写,可以参考我下面的pom.xml内容:
<?xmlversion="1.0" encoding="UTF-8"?>
<projectxmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>imooc-security</artifactId>
<groupId>com.imooc.security</groupId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>imooc-security-core</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-oauth2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
</dependency>
<dependency>
<groupId>org.springframework.social</groupId>
<artifactId>spring-social-config</artifactId>
<version>1.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.social</groupId>
<artifactId>spring-social-core</artifactId>
<version>1.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.social</groupId>
<artifactId>spring-social-security</artifactId>
<version>1.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.social</groupId>
<artifactId>spring-social-web</artifactId>
<version>1.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.2</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
这样IDEA就会自动下载相应的依赖,于是就可以了。