關(guān)于Spring配置方面的一點心得(io.spring.platform)
最近在配置Maven項目,也就是使用io.spring.platform來進行管理自己的Spring項目的各種依賴萧福,但是后來的配置過程中發(fā)現(xiàn)不簡單僻弹,因為剛開始我是使用
<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>
但是后來總是在啟動項那里發(fā)現(xiàn)锦亦,不是少這個方法就是少那個方法步氏,列舉其中的一個錯誤:springboot項目啟動報錯Attribute 'proxyBeanMethods' in annotation [org.springframework.
后來在一些小伙伴的討論中说墨,發(fā)現(xiàn)有可能是版本的問題,因為在不同版本可能會有一些方法不存在或者過時廢棄的情況出現(xiàn)眠副,導致在索引依賴的時候出現(xiàn)找不到方法的情況。
那個提出問題的小伙伴最后解決了竣稽,他是將2.1.4.RELEASE升級為2.2.0.RELEASE? 這個回答啟發(fā)了我囱怕,于是我去搜索Cairo-SR7版本的io.spring.platform對應的springBoot版本,結(jié)果它對應的是2.0.8.RELEASE毫别,在官方的文檔中發(fā)現(xiàn)它已經(jīng)排在最后娃弓,原來這個io.spring.platform已經(jīng)終止研發(fā)了,官方?jīng)Q定使用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生產(chǎn)線的維護版本將繼續(xù)發(fā)布台丛,直到那時為止件已。 鼓勵平臺用戶開始使用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>
但是在我使用該方式之后出現(xiàn)了侠坎,全部依賴無法找到的情況,我猜測可能一個項目的包管理的方式可能只有一個裙盾,我有兩個实胸,可能會出現(xiàn)混亂,于是我還是在<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 的時候你會發(fā)現(xiàn),你的部分依賴會報 unknow徘熔,也就是找不到的錯誤假褪,這個其實是一種思維定勢,在之前io.spring.platform管理的springboot 1.X時代的確不用管理這些依賴近顷,只要寫上依賴的名字生音,然后io.spring.platform會自動配置版本來達到兼容,但是現(xiàn)在不是用這個方式之后窒升,顯然這種方式已經(jīng)不在適用了缀遍,對于一些依賴你要明確它的版本,有些則可以不寫饱须,可以參考我下面的pom.xml內(nèi)容:
<?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就會自動下載相應的依賴域醇,于是就可以了。