前言
以前用spring boot都是用idea的自動創建,或者是用的Jhipster創建的,就沒有深究怎么去搭建。但是今天晚上心血來潮,想自己搭一個demo來整合一些技術,於是就花一點時間來手動搭。因為今天網絡有點不好,所以spring boot的官網一直打不開,也就導致了無法閱讀官方文檔,就按照自己的記憶去搭於是遇到了以下兩個問題
正文
如果已經引入了spring boot 的包 :
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
</parent>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
1 如果啟動失敗,一直報錯,是有可能 你的啟動類直接放在了 src.java.main 下面 ,這是錯誤的,你需要將您的啟動類放在 src.java.main.* 以下 例如 src.java.main.com.dai.test 下面
2 如果啟動成功,但是卻訪問不了你自己寫的controller,報404錯誤,那么原因就是您寫的controller沒有被spring 容器掃描到
解決方案: spring boot 默認掃描您的類是 在啟動類的當前包 和 下級包 。比如: 您的啟動類(TestStart.java)在 com.dai.test 下(com.dai.test.TestStart.java) 那么spring 會掃描 com.dai.test
和 com.dai.test.* 如果你的controller(TestController.java)沒有放在com.dai.test或者com.dai.test.* 下的話,就不會被掃描到,就會發生404錯誤.
還有一種解決方案是 ,配置spring 掃描路徑
在啟動類的上面添加 @ComponentScan(basePackages = {"com.dai.*"}),這配您的controller所在的包
×××××再放一個了××××解決404問題,通過spring的log去看(這個方法主要檢測是不是你的路徑配錯了,用於查看代碼是否有問題)
在spring boot的啟動log里面,有一個RquestMappingHandlerMapping 的log,你們具體可以看看你們寫的controller有沒有被mapping
s.w.s.m.m.a.RequestMappingHandlerMapping :
Mapped "{[/consumer/user/getUser],methods=[POST]}" onto public com.dai.cloud.response.UserResponse com.dai.cloud.consumer.controller.UserController.getUser(java.lang.String)
這個就是一個log的demo ,意思就是已經將
public com.dai.cloud.response.UserResponse com.dai.cloud.consumer.controller.UserController.getUser(java.lang.String)
這個方法 mapping 到了 /consumer/user/getUser這個 POST路徑。 你們可以檢查下看看你們有沒有對應的log
