畢業後開始找工作,在高雄開有關於 Express 的職缺很少,就因為這樣我決定多學一個後端框架。選擇 Spring 是因為大二的時候學過 Java,看了半天的書記憶就回復得差不多了。學到現在其實不難,也多虧有學習其他框架,在概念上很快就可以理解了。
Spring Framework
Spring Framework,利用控制反轉容器 ( 依賴注入 ) 核心概念實現的 Web 應用開源框架。大幅簡化過去 Java EE Web 應用程式開發,目前該框架許多核心功能也都可以用於大部份 Java 應用。
- 控制反轉容器( 依賴注入 ):控制反轉(IOC,Inverse Of Control),就是把建立物件的權利交給框架,也就是指將物件的建立、儲存與管理交給了 Spring 容器 ( Spring 容器是Spring 中的一個核心模組,用於管理物件,底層可以理解為是一個Map集合 )。
Spring 擁有以下特性:
- 輕量級、鬆散耦合的
- Spring Web 是一個設計良好的 Web MVC 框架
- 模組化組織
- 易於測試
鬆散耦合:耦合指的是系統中元件互相依賴的程度,越少依賴則重複使用的彈性就越高。如果 A 模組與 B、C 和 D 模組有關係,那麼 A 就有很高的依賴,需要花更多時間維護。
Spring Boot
Spring Boot 就是 Spring 的簡化版,是基於 Java 的開源框架,可以用於創建微服務(MicroService)。
- 易於理解開發應用
- 使配置變得簡單並彈性
- 提供有力的管理Rest端點
- 自動化配置
- 依賴套件管理簡單
- 內建Servlet容器
- 獨立打包直接運行
VSCode 建立 Spring 專案
先在 VSCode 上下載 Java Extensions:
- Language Support for Java(TM) by Red Hat
- Java Extension Pack
- Debugger for Java
- Maven for Java
再安裝 Spring 需要以下三個 Extensions:
- Spring Initializr Java Support
- Spring Boot Tools
- Spring Boot Dashboard
新建專案
跟著官方文件 來建立 Spring 專案。
在 VSCode 按下 F1,輸入 Spring initializr: Create a Maven Project
,將 Group Id
與 Artifact Id
改成自己想要的名字,其他就下一步即可。
當然也可以預先安裝幾個套件,後面會解釋:
- Spring Web
- Spring Data JPA
- H2 Database
- Lombook
進入專案
在新的專案裡找到 src/main
裡面唯一的那個檔案 BlogApplication.java
(這裡的專案名稱為 blog),以下為程式碼:
package demo.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class BlogApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@SpringBootApplication
是一個復合的 Annotation,裡面有:
@SpringBootConfiguration
:繼承自@Configuration
,標註當前類別是配置類,並會將當前的類別標記為@Bean
的實例加入到 Spring 容器中@EnableAutoConfiguration
:啟動自動加入配置,導入你所需要的 jar 包@ComponentScan
:掃描當前包與底下所有@Controller
@Service
@Compoment
@Repository
按下 Run > Start Debugging 來啟動 Spring Boot 專案 ( 快捷鍵 F5 )。
看到以下畫面就表示啟動成功了:
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.1.0)
資料夾結構
main
:程式資料夾BlogApplication.java
:程式進入點static
:用於存放 css、js、images 靜態檔案templates
:提供默認配置的模板引擎application.properties
:設定所有的配置的地方,可參考官方文件test
:測試資料夾BlogApplicationTests.java
:測試檔案
我會把 application.properties
改成 application.yaml
,並同時更改 port:
server:
port: 8080
結語
很多網路上的教學都是預設的 Demo,一開始我也使用 Demo,但是寫著寫著就完成了整個 RESTful-API 了,忘了改也懶得改了 😂。順道一提,這個專案已經完成並放在我的 GitHub 了 et860525/spring-restful。
明天要去面試一個遠方的工作,以上。