1. 程式人生 > 實用技巧 >Spring入門踩坑記錄

Spring入門踩坑記錄

記錄一下學習Spring時的踩坑經驗。


Jdk8不相容Spring4.x以下版本

入門三天,我一直被這控制檯一片紅苦惱著。

在視訊的評論區中沒有解決,上論壇上也沒有解決。

詳細報錯:

org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
資訊: Loading XML bean definitions from class path resource [beans.xml]
Exception in thread "main" java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotationUtils.clearCache()V
	at org.springframework.context.support.AbstractApplicationContext.resetCommonCaches(AbstractApplicationContext.java:924)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:575)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:144)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:85)
	at MyTest.main(MyTest.java:13)

解決

知道我無意間看到這個!!!

Ctrl+Shift+Alt+S,進入專案設定,更換專案的Jdk版本為8以上,我選擇的是Jdk12:

如果以上設定還法子解決,那可能還需要再多一步:

不支援發行版本5 或 Compilation failed: internal java compiler error

提示

Error: java: 錯誤: 不支援發行版本 5

``Error: java: 錯誤: Compilation failed: internal java compiler error`

分析:

導致這個錯誤的原因主要是因為jdk版本問題,此處有兩個原因,一個是編譯版本不匹配,一個是當前專案jdk版本不支援。我的是編譯器版本的問題。

解決:

Ctrl+Alt+S,進入IDEA設定,Compiler中設定Java編譯器的版本。

解決來源:https://blog.csdn.net/wo541075754/article/details/82119860

NoSuchBeanDefinitionException: No bean named 'user' available

控制檯提示以下錯誤:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'user' available

解決:
檢查XML檔案中Bean物件的id是否有問題?檢查繫結的class是否有問題?等等……
結果,我發現是繫結的XML檔案,userbeans.xml繫結成了beans.xml。。。

ApplicationContext context = new ClassPathXmlApplicationContext("userbeans.xml");

同時使用p名稱空間、c名稱空間

同時使用p名稱空間、c名稱空間,因為類中缺少無參構造器,控制檯會報錯:

org.springframework.context.support.AbstractApplicationContext refresh
警告: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'user' defined in class path resource [userbeans.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.melodyhub.pojo.User]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.melodyhub.pojo.User.<init>()

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'user' defined in class path resource [userbeans.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.melodyhub.pojo.User]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.melodyhub.pojo.User.<init>()

解決:

類中加上無參構造器,即可。

NullPointerException

控制檯報錯:出現空指標

java.lang.NullPointerException

解決

上述問題存在多種情況。

  1. 可能是使用了註解,但是applicationContext.xml中沒有該語句
<!--開啟對註解的支援-->
<context:annotation-config/>