TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM --- BÁO CÁO THỰC TẬP LẬP TRÌNH WEB API VỚI SPRING BOOT Thực tập sinh : Trần Minh Nhựt TP... Công nghệ thông tin giờ đây đã
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
-
BÁO CÁO THỰC TẬP
LẬP TRÌNH WEB API VỚI SPRING BOOT
Thực tập sinh : Trần Minh Nhựt
TP Hồ Chí Minh, tháng 7 năm 2020
Trang 2LỜI MỞ ĐẦU
Công nghệ thông tin đã tạo nên một xã hội toàn cầu, nơi mà mọi người có thể tương tác và liên lạc với nhau một cách nhanh chóng và hiệu quả Trong hơn 15 năm qua, lĩnh vực công nghệ thông tin Việt Nam đã đạt được nhiều thành tựu quan trọng
Ngày nay, công nghệ thông tin dần trở thành ngành kinh tế mũi nhọn của đất nước,
có tỉ lệ đóng góp cho tăng trưởng GDP đất nước ngày càng cao Công nghệ thông tin giờ đây đã có mặt ở nhiều phương diện trong cuộc sống hàng ngày của chúng ta, từ thương mại đến giải trí và thậm chí cả văn hóa, xã hội và giáo dục…
Công nghệ thông tin giữ một vai quan trọng tại các quốc gia trên thế giới, đặc biệt tại Việt Nam, công nghệ thông tin được xem là nền tảng vững chắc phục vụ cho tiến trình phát triển đất nước bền vững
Sau thời gian học tập tại Trường Đại Học Công Nghệ Thông Tin em đã được trang bị những kiến thức lý thuyết rất tốt Trong thời gian thực tập thực tế, em đã có cơ hội quý báu được thực tập tại Công ty Cổ phần Gumi Việt Nam, dưới sự hướng dẫn tận tình của Quý Anh Chị đồng nghiệp nơi đây, em đạ thực hiện bài báo cáo của mình với nội dung dưới đây
Trang 3LỜI CẢM ƠN
Để hoàn thành chuyên đề báo cáo thực tập này trước hết em xin gửi đến quý thầy,cô giáo trong khoa Công nghệ Phần mềm trường Đại học Công Nghệ Thông Tin lời cảm ơn chân thành
Đặc biệt, em xin gởi đến anh Nguyễn Thành Đức, người đã tận tình hướng dẫn, giúp
đỡ em hoàn thành chuyên đề báo cáo thực tập này lời cảm ơn sâu sắc nhất
Em xin chân thành cảm ơn Ban Lãnh Đạo, các phòng ban của Công ty Cổ phần Gumi Việt Nam, đã tạo điều kiện thuận lợi cho em được tìm hiểu thực tiễn trong suốt quá trình thực tập tại công ty
Cuối cùng em xin cảm ơn các anh chị phòng Nghiên cứu, phát triển của Công ty Cổ phần Gumi Việt Nams đã giúp đỡ em hoàn thành tốt chuyên đề thực tập này
Đồng thời nhà trường đã tạo cho em có cơ hội được thưc tập nơi mà em yêu thích, cho em bước ra đời sống thực tế để áp dụng những kiến thức mà các thầy cô giáo đã giảng dạy Qua công việc thực tập này em nhận ra nhiều điều mới mẻ và bổ ích để giúp ích cho công việc sau này của bản thân
Vì kiến thức bản thân còn hạn chế, trong quá trình thực tập, em không tránh khỏi những sai sót, kính mong nhận được những ý kiến đóng góp từ thầy cũng như quý công ty
Trang 4NHẬN XÉT CỦA KHOA
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 5MỤC LỤC
CHƯƠNG 1: GIỚI THIỆU VỀ CÔNG TY CỔ PHẦN GUMI VIỆT NAM 1
1.1 Quá trình hình thành và phát triển của công ty 1
1.2 Tầm nhìn, sứ mệnh 1
1.3 Chức năng hoạt động và kinh doanh của Gumi Việt Nam 2
CHƯƠNG 2: NỘI DUNG THỰC TẬP 2
2.1 Lịch làm việc tại nơi thực tập 2
2.2 Kết quả đạt được qua kỳ thực tập 3
2.2.1 Những kiến thức lý thuyết đã được củng cố 3
2.2.2 Những kỹ năng thực hành đã được học thêm và những kinh nghiệm thực tiễn đã tích lũy được 3
CHƯƠNG 3: NỘI DUNG THỰC TẬP 4
3.1 Sơ lược về Spring Boot: 4
3.1.1 Mô hình Spring MVC 4
3.1.2 Giới thiệu về Spring Boot 5
3.2 Nội dung công việc 5
3.2.1 Các phần mềm sử dụng 6
3.2.2 Thiết kế spring boot application đơn giản 6
3.2.3 Java Persistence API (JPA) 9
3.2.4 Katharsis JSON API 11
3.2.5 Testing với Junit và Mockito 14
TỔNG KẾT 15
Trang 6CHƯƠNG 1: GIỚI THIỆU VỀ CÔNG TY CỔ PHẦN GUMI VIỆT NAM
1.1 Quá trình hình thành và phát triển của công ty
- Tên Công ty: CÔNG TY CỔ PHẦN GUMI VIỆT NAM
- Loại hình hoạt động: Công ty Cổ Phần
- Mã số thuế: 0312512116
- Địa chỉ: Số 39, Đường Nguyễn Thị Diệu, Phường 6, Quận 3, Thành phố
Hồ Chí Minh
- Ngày cấp giấy phép: 14/10/2013
Công ty Gumi Việt Nam là công ty chuyên về thiết kế web, lập trình và phát triển các ứng dụng dành cho smart phone Cùng với liên kết chặt chẽ giữa công ty mẹ gumi (trụ sở Tokyo) và gumi Việt Nam ( trụ sở Hồ Chí Minh) chắc chắn sẽ tạo được những sản phẩm tốt nhất đến cho khách hàng trong nước và ngoài nước Cùng với đội ngũ nhân viên Nhật Bản và Việt Nam, công ty luôn sẵn sàng chấp nhận mọi “thách thức”
để phấn đấu trở thành công ty IT hàng đầu tại Việt Nam
1.2 Tầm nhìn, sứ mệnh
Tầm nhìn: Công ty hàng đầu trong lĩnh vực thiết kế web, lập trình và phát triển các ứng dụng dành cho smart phone
Sứ mệnh: Trong nền kinh tế hiện nay, việc kinh doanh không chỉ giới hạn ở trong nước mà còn mở rộng ở nước ngoài, đưa nền kinh tế dẫn đến sự thành công Tuy nhiên, sự phát triển của các thiết bị thông minh và mạng lưới, những hạn chế về khoảng cách đều được loại bỏ, cơ hội mở rộng kinh doanh là qua biên giới cũng đã tăng lên Cùng với những ý tưởng công nghệ tiên tiến, công ty Gumi Việt Nam xin được đóng góp cho hai nước Việt Nam và Nhật Bản càng nhiều càng tốt
Trang 71.3 Chức năng hoạt động và kinh doanh của Gumi Việt Nam
• Phát triển phần mềm
- Phát triển dịch vụ phần mềm các ngôn ngữ chủ yếu : NET, Java, C/C++, php, Python, Ruby, iOS, Android,…
- Gia công phần mềm cho các công ty về các lĩnh vực như : network, tài chính, e-commerce,…
• Kiểm thử phần mềm
- Kiểm tra toàn bộ hệ thống
- Kiểm soát chất lượng
- Giải pháp kiểm thử phần mềm
- Tự động hóa testing
• Thiết kế giao diện(visual design)
- Thiết kế apps đa nền tảng (web, mobile, desktop)
• Dịch vụ quản trị hệ thống IT:
- Gumi Việt Nam cung cấp dịch vụ như: Cloud and server, IT security, Application packaging
CHƯƠNG 2: NỘI DUNG THỰC TẬP
2.1 Lịch làm việc tại nơi thực tập
Thứ 2, thứ 4, thứ 5, thứ 6
Nhiệm vụ chính được giao: Tìm hiểu về Spring MVC và phát triển Web API
Trang 82.2 Kết quả đạt được qua kỳ thực tập
2.2.1 Những kiến thức lý thuyết đã được củng cố
Những kiến thức vận dụng: kỹ năng lập trình, hướng đối tượng, cơ sở dữ liệu Củng cố kỹ năng lập trình, quy trình thiết kế phần mềm
2.2.2 Những kỹ năng thực hành đã được học thêm và những kinh nghiệm thực tiễn đã tích lũy được
- Tìm hiểu về mô hình MVC và Spring Framework, cách vận hành của phần back-end trong một website
- Củng cố kiến thức về Java Web
- Có được các kỹ năng lập kết hoạch và tổ chức công việc hiệu quả
- Khả năng học hỏi tìm tòi, nghiên cứu vấn đề mới
- Khả năng làm việc nhóm
- Trau dồi kỹ năng giao tiếp, kỹ năng Tiếng Anh
- Có một thói quen làm việc tốt
Trang 9CHƯƠNG 3: NỘI DUNG THỰC TẬP
3.1 Sơ lược về Spring Boot:
3.1.1 Mô hình Spring MVC
Bao gồm 3 thành phần chính :
- Controller : Giữ nhiệm vụ điều hướng các yêu cầu từ người dùng, chứa logic doanh nghiệp, đảm nhận yêu cầu từ phía client, lưu trữ dữ liệu vào database, web service,…
- Model : Chứa cái nghiệp vụ logic, phương thức xử lý, truy xuất Database, hàm
xử lý, Class,…
- View : hiển thị thông tin tương tác với người dùng, là nơi tập hợp các form hoặc file HTML, CSS, templates …
Hình 1.1: Mô hình Spring MVC
HTTPRESPONSE
MODEL
HTTP
REQUEST
1
2
3 4
5
Trang 103.1.2 Giới thiệu về Spring Boot
Spring boot là Project nằm trên tầng IO Execution của Spring MVC Framework Spring boot được tạo ra làm dễ dàng hơn cho việc lập trình và phát triển ứng dụng Spring boot hỗ trợ các bộ chứa nhúng, cho phép các ứng dụng web có thể chạy độc lập mà không cần triển khai ở các Web Server
Như vậy Spring Boot bao gồm Spring Framework (Spring MVC) và Embedded HTTP server ( Tomcat, serverlet, ) Lợi ích của Spring Boot là ta không cần phải cấu hình XML, giảm thiểu thời gian và tăng năng xuất
3.2 Nội dung công việc
Maven và config các dependency
Persistence API, Katharsis JSON API
và Mockito
Trang 113.2.1 Các phần mềm sử dụng
- JRE 8, JDK 8
- Intellij idea: Java development
- Maven dependency
- MySQL Workbench
- Postman for API development
- Git version control
3.2.2 Thiết kế spring boot application đơn giản
• Tạo một maven project:
mvn archetype:generate -DgroupId=com.tma -DartifactId=training-lab-api -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
• Thư mục chứa application:
Hình 1.1: Cấu trúc của project Maven
Trang 12POM file configuration là trung tâm của Maven project Là một file đơn lẻ chứa các thông tin cần để build
Hình 2.2: Cấu trúc của POM file
• Thêm Spring boot vào project:
Thêm dependency vào POM.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>
• Bổ sung các @anotation vào Application class:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
Trang 13Tạo một HelloController Class là controller dùng để test app
Hình 2.3: HelloControler Class
• Sau khi run app, truy cập vào localhost:8080/api/ ta được:
Hình 2.4: Kết quả sau khi connect tới localhost
Trang 143.2.3 Java Persistence API (JPA)
• Maven:
Maven là một chương trình quản lý dự án cho phép developers xây dựng và quản lý bất
kỳ dự án liên quan đến Java Cung cấp các công cụ hỗ trợ dependencies (thư viện sử dụng trong dự án)
• Sử dụng Spring JPA để lưu trữ và truy xuất dữ liệu trong relational database, JPA dependency:
< dependency >
< groupId >org.springframework.boot</groupId>
< artifactId >spring-boot-starter-data-jpa</artifactId>
</dependency>
• Cấu hình MySQL:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
• MySQL query:
CREATE DATABASE IF NOT EXISTS `tlab_db`;
USE `tlab_db`;
DROP TABLE IF EXISTS `subject`;
CREATE TABLE `subject` (
`subject_id` bigint(20) NOT NULL AUTO_INCREMENT,
`description` varchar(45) NOT NULL,
PRIMARY KEY (`subject_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
Trang 15UNLOCK TABLES;
Tạo một Subject class trong model package, tiến hành mapping với database:
Hình 2.5: Kết nối java class với database
• Thêm vào HelloController class để test SubjectJpaRepository
@Autowired
private SubjectJpaRepository jpaRepository;
@RequestMapping("/")
System.out.println("START testing jpa");
List<Subject> subjectList = jpaRepository.findAll();
Trang 16for (Subject subject : subjectList) { System.out.println("ID = " + subject.getSubjectId()); System.out.println("Description = " + subject.getDescription()); }
System.out.println("END testing jpa");
return "Greetings from Spring Boot!";
}
• Truy cập vào server ta được:
3.2.4 Katharsis JSON API
• Tạo repository và thêm các class SubjectRepository và SubjectRepositoryImpl :
Trang 17• Thêm KatharsisConfigV3 ở Application class
@SpringBootApplication
public static void main(String[] args) {
SpringApplication.run(Application.class, args); }
}
• Test các chức năng củaRESTfulAPItrên Postman:
GET request: http://localhost:9090/api/subjects
Hình 2.7: GET request
Trang 18• POST request: tạo mới một subject và thông tin của subject đó sẽ được lưu vào trong database
Hình 2.8: POST request
• PATCH request : chỉnh sửa thông tin của subject có id = 3
Trang 193.2.5 Testing với Junit và Mockito
Junit là một framework mã nguồn mở dùng để tạo ra các scrip testing tự động cho Java
Thêm @Test annotation vào phương thức test, tiếp theo tạo một object bên dưới phương thức test để gọi method và định nghĩa các kết quả mong muốn, sau đó gọi phương thức cần test để so sanh kết quả thực tế so với kết quả mong muốn
Trang 20TỔNG KẾT
Với sự chỉ bảo và hướng dẫn của anh Nguyễn Thành Đức cùng với sự nỗ lực làm việc, đề tài của em đã được hoàn thành Với những thuận lợi và khó khăn trong quá trình làm việc, công việc về cơ bản đã hoàn thành nhưng không tránh phần sai sót Bên cạnh đó xin chân thành cảm ơn công ty Cổ phần Gumi Việt Nam và toàn thể các anh chị trong công ty đã hỗ trợ giúp đỡ em hết mình trong công việc và sinh hoạt