Java學習之創建Spring程序

一、利用https://start.spring.io/創建Spring程序


創建好之后,下載下來之后,使用idea打開。


二、修改Maven倉庫

Maven默認倉庫,在國外。國內使用,會很慢,在下載依賴時,時不時卡著不動或者中斷。可以將Maven倉庫改為阿里云的倉庫,具體操作如下:

  • 修改 maven 根目錄下的 conf 文件夾中的setting.xml 文件的mirrors 節點;
 <mirrors>
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
    </mirror>
</mirrors>
  • pom.xml文件添加
<repositories>
        <repository>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

三、編寫第一個Api

@SpringBootApplication
@RestController
public class LearnSpringApplication {

    public static void main(String[] args) {
        SpringApplication.run(LearnSpringApplication.class, args);
    }
    @RequestMapping("/learn")
    public String learn(){
        return "learn spring";
    }

}

我們只需要僅僅一行代碼,就生成一個api啦,其他的工作Spring Boot幫我們完成了。現在,就來啟動這個application,我們來看看啟動的信息:

application輸出log

從輸出的log可以看到,Tomcat啟動了8080端口,我們訪問下剛剛的api
curl http://localhost:8080/learn

同時,我們引入了Actuator依賴,給我們做了其他的一些事,譬如說,提供健康檢查。
curl http://localhost:8080/actuator
Actuator提供的服務

四、使用Maven打包

接下來,我們使用Maven打包

  • 使用mvn clean package 打包;
  • 切換到Target目錄下 >cd target;
  • 查看目錄下文件 dir

    可以看到有兩個jar包,一個4k,一個18m。為什么會相差這么大呢?一個是jar包原本的大小,18m的jar包包含了運行所需要的依賴,為可執行性文件,可以直接運行。接下來我們來運行下jar包。
  • 運行jarjava -jar learn-spring-0.0.1-SNAPSHOT.jar
    啟動失敗了

    原來是8080端口被占用了,那我們把idea的啟動停止了,重新執行jar包,可以看到和前面啟動application輸出的log一樣,啟動了Tomcat 8080端口。
    jar包輸出log

    我們再次訪問下

五、踩過的坑

似乎看起來,超級簡單,一路順暢,然而一把辛酸淚。

  • 找不到或無法加載主類LearnSpringApplication
    網上百度說是缺少springboot啟動插件,然后pom.xml已有這個配置;
    <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

有一說jar包錯誤,解決方案使用Maven更新依賴,無效。一怒之下,將項目刪除,重新從https://start.spring.io/創建項目。

  • org.junit不存在。這次運行mvm package時出現org.junit不存在,繼續百度,網上方案皆是說由于scope造成,需要去除<scope>test</scope>這個配置。
    <scope>test</scope>表示依賴的作用域,只能在srctest這個目錄下起作用,在其他目錄不起作用。
    我的項目文件結構為如下圖
    項目結構

    標注<scope>test</scope>應該是正確的,然而,我也沒有其他辦法,只能試一試,然而,錯誤依舊。淚奔。

接著,刪除倉庫下下載的所有依賴,運行mvn clean package,運行項目,錯誤依舊。再次把項目刪除,重新從https://start.spring.io/創建項目,然而,這次的錯誤再次發生改變。

  • pom.xmlspring-boot-maven-plugin插件報紅,MavenDependencies也報紅。
    百度說配置下setting.xml阿里鏡像,然而我配置的是阿里鏡像啊。重新查看Maven菜鳥教程,不僅需要設置setting.xml,pom.xml也需要添加下相關節點:
<repositories>
        <repository>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

加上,運行mvn clean package,還是報紅。
再次使用終極大法,刪除倉儲,重新建。
這次是先配置好pom.xml,添加repositories節點,運行mvn clean package,沒有報紅,有希望,run LearnSpringApplication終于成功了。

血淚之經驗: 倉庫一定要配置好

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。