本篇文章將說明我們在專案中開發的 Bot Server 所使用的依賴項,以及它們如何透過上一篇提到的Spring Boot Starters與注解設定來協同工作,實現我們所需的功能。內容包括:
以下是專案中的所有 Package 及其子 Package,並附上簡要說明:
圖: Bot Server 程式結構
NextpageLineBotServerApplication
,以便 Spring 能夠正確識別和管理所有需要託管的 Beans。KafkaConsumerConfig
LinebotConfig
MongoConfig
OpenAIAPiConfig
1.送出API Request
2.接收API Response
2.資料庫存取物件
model負責在這三個場景中,為Class指定資料的結構(Schema),包含資料型態,名稱等等。
application.properties
包含了真正在使用的環境變數值。如同我們在建立官方帳號時提到,此檔案包含了連線設定和Token的私密資訊 ,不可以上傳到git。application.properties.example
只包含此專案可以設定的環境變數名稱及說明,每次有新增或修改時,和程式碼一樣被更新到git。spring-kafka
@KafkaListener
@EnableKafka
來設定Consumer Listener。@Component
這個Annotation的特化,可以想像成繼承了@Component,但根據不同的依賴,有額外功能的Annotationspring-boot-starter
spring-boot-starter-data-mongodb
jackson-databind
line-bot-sdk
openai-api
<dependencies>
<!-* Spring Kafka -->
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
<!-* Spring Boot Starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-* Spring Data MongoDB -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<!-* Jackson Databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<!-* Line Messaging API -->
<dependency>
<groupId>com.linecorp.bot</groupId>
<artifactId>line-bot-sdk</artifactId>
</dependency>
<!-* OpenAI API -->
<dependency>
<groupId>com.openai</groupId>
<artifactId>openai-api</artifactId>
</dependency>
</dependencies>
本章介紹Bot Server如何實現上一章提到的Spring Boot程式結構與掃描機制,以及所使用的依賴項。
下一章將解釋序列化與反序列化,這是我們在 Java 中進行 JSON 或其他外部交換格式轉換時經常用到的重要概念。