Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.01 MB, 22 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<b> </b>
<b> </b>
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4"></div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">
<b> Bên Android, cấu trúc dự án sẽ chia làm các thành phần là model, repository,</b>
serviceapi, utils, view. Mỗi một package sẽ chứa code để làm việc với từng thành phần tương ứng.
<b> </b>
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6"><b> Trong package model, là nơi chứa các domain hay các thực thể để cho việc trao</b>
đổi dữ liệu trong suốt cả chương trình Android.
<b> Trong package</b> repository và serviceapi là nơi
thành phần để giao tiếp với bên Spring BackEnd. Đây là phần MODEL ở trong kiến trúc MVVM.
<b> Trong package view là nơi để làm</b> việc với các activity và các fragment, đây là nơi
chứa nhiều code và nghiệp vụ nhất khi làm việc với Android, ở trong kiến trúc MVVM đây là phần VIEW và VIEW MODEL. Hình sau sẽ giới thiệu đơi chút.
<small>package utils chứa các thành phần static để sử dụng trong suốt quá trình ứng dụng chạy</small>
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">Bên phía BackEnd, các module được chia thành các package như bootstrap, configuration, controller, dto, exception, mapper, model, repository, service, util. Trong đó các package như controller sẽ là đại diện cho tầng presentation (trình diễn) , những class trong package này sẽ có nhiệm vụ cung cấp các api để client có thể giao tiếp với phía BackEnd, package service và repository đại diện cho tầng business cũng như tầng persistence, đây là nơi chứa những class giải quyết các logic nghiệp vụ và logic để giao tiếp với phía DB, Database em sử dụng là PostgresSql.
<small>package auth chứa các activities và fragments liên quan đến đăng nhập, đăng ký, …</small>
<small>package love chứa các activities và fragments liên quan đến trang loveplaylist, tạo một love playlist, …</small>
<small>package musicplayer chứa các activities và fragments liên quan đến trình phát nhạc, và service để phát nhạc trong khi ứng dụng chạy</small>
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">Package bootstrap có class Bootstrap để khởi chạy các thành phần cần thiết và xử lý các dữ liệu cần thiết khi server khởi chạy, em dùng class này để khởi tạo lời gọi đến Song API rồi sau đó xử lý dữ liệu nhét vào album rồi lưu vào DB, một dạng initialize dữ liệu.
Package dto chứa các class DTO (Data Transfer Object) để trao đổi dữ liệu, exception chứa các lớp xử lý ngoại lệ tự định nghĩa, mapper là nơi chứa các interface để thực hiện cho việc chuyển đổi giữa DTO và Model gốc. Em các annotations của MapStruct để trong quá trình package thành jar sẽ tự sinh ra code triển khai các interface này cho việc chuyển đổi.
Cuối cùng là các package còn lại
<small>package configuration có chứa class để cấu hình các Spring Bean cần thiết để sử dụng trong khi code…</small>
<small>package model chứa các logic miền hay domain logic chính của hệ thống backend</small>
<small>package repository, service có tác dụng để trao đổi với phía database, các service sẽ sử dụng thành phần phụ thuộc (DI) từ repository để các logic nghiệp vụ có thể giao tiếp với DB</small>
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">Ngồi ra em cịn viết một số unit test và integration test phía backend để kiểm thử xem API hoạt động oke chưa hay kiểm thử xem repository lấy dữ liệu, lưu dữ liệu chuẩn chưa.
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10"><b> </b>
Giao diện bắt đầu sau intro là giao diện đăng nhập của ứng
<b> </b>
<b> </b>
<small>file cấu hình cho ứng dụng spring</small>
<small>Đây là cấu hình mặc định cho remote database, chúng ta cần thay đổi để chạy trên local database đã cài từ bước trước.</small>
</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20"><small>Thay đổi từ Constants.FULL sang Constants.EMULATOR_FULL_PATH</small>
</div>