iT邦幫忙

2023 iThome 鐵人賽

DAY 14
0
Mobile Development

Spring Boot & Android Studio教學系列 第 14

深入探討Spring Boot三層架構:建立高效的應用程式

  • 分享至 

  • xImage
  •  

Spring Boot 是一個用於開發 Java 應用程序的框架,它支援使用三層架構來組織應用程序。三層架構是一種常見的軟體架構模式,用於分離應用程序的不同功能和責任。下面是 Spring Boot 中的三層架構的簡要介紹:

表現層(Presentation Layer):

表現層是應用程序的前端部分,負責處理用戶界面和用戶輸入。
在 Spring Boot 中,通常使用控制器(Controller)來處理 HTTP 請求和響應。
控制器接收用戶輸入,處理它,然後決定要顯示給用戶的視圖。
視圖通常是HTML、JSON 或其他格式的響應。

業務邏輯層(Business Logic Layer):

業務邏輯層包含應用程序的核心邏輯,負責處理業務邏輯和數據處理。
在 Spring Boot 中,你可以使用服務(Service)類來實現業務邏輯。
服務類通常包含方法,這些方法執行特定的業務操作,並可以調用資料訪問層來操縱數據。

資料訪問層(Data Access Layer):

資料訪問層負責與資料庫或其他持久性存儲系統進行交互,執行數據操作。
在 Spring Boot 中,你可以使用持久性層(Persistence Layer)來實現資料訪問。
使用 Spring 的 JPA(Java Persistence API)或 Spring Data JPA 可以簡化與資料庫的交互。
這一層通常包括實體類(Entity Classes)、資料訪問對象(Data Access Objects,DAOs)和資料庫操作。

範例:

首先我們要創建四個東西分別為User的實體類(Entity)、控制器(Controller)、服務(Service)、存儲庫(Repository)

User.java

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity//創建一個與該實體類對應的資料表
@Table(name = "_user")//資料表名稱
public class User {
    @Id//資料表主鍵(不可少)
    @GeneratedValue//自動生成
    private Long id;
    private String account;//帳號
    private String password;//密碼
}

裡面的屬性都可以個人增加刪除

UserController.java

@RestController
@RequiredArgsConstructor
@RequestMapping("/user")
public class UserController {
    private final UserService service;

    //將帳號密碼傳入資料表中
    @PostMapping("/post")
    public User register(
            @RequestParam("account") String account,
            @RequestParam("password")String password
            ){
        return service.register(account, password);
    }

    //抓出所有使用者
    @GetMapping("/getAll")
    public List<User> allUser(){
        return service.allUser();
    }
}

@RestController
為了讓spring boot知道我這個類為Controller
@RequiredArgsConstructor
將有final修飾詞的的變量創建構造函數讓值可以順利傳遞給Service
Controller的目的就是將用戶傳遞的資料接收後丟給Service去做業務邏輯處理

UserService.java

@Service
@RequiredArgsConstructor
public class UserService {
    private final UserRepository userRepository;
    
    public User register(String account, String password) {
        //將帳號與密碼的值附在user上
        var user = User.builder()
                .account(account)
                .password(password)
                .build();
        //接這請資料訪問層將user存在資料表裡面
        userRepository.save(user);
        return user;
    }

    public List<User> allUser() {
        //項資料訪問層索取所有用戶訊息
        var UserList = userRepository.findAllUser();
        return UserList;
    }
}

UserRepository.java

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    @Query("SELECT u FROM User u")
    List<User> findAllUser();
}

Repository是負責幫訪問資料庫做出來執行基本的CRUD(創建、讀取、更新、刪除)操作
這裡可以用不同的方式去查詢你要的資料下一篇會講

以上就是一整套三層架構寫法


上一篇
OpenAPI 3.0解析:輕鬆建立和管理RESTful API
下一篇
Repository實用指南:CRUD操作和自定義查詢
系列文
Spring Boot & Android Studio教學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言