LẬP TRÌNH WEB API VỚI SPRING BOOT
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA KỸ THUẬT MÁY TÍNH
-LẬP TRÌNH WEB API VỚI SPRING BOOT
BÁO CÁO THỰC TẬP DOANH NGHIỆP
SV thực hiện:
MSSV:
Người hướng dẫn: KS Trần Đại Dương
Thành phố Hồ Chí Minh – Năm 2018
Trang 2LỜ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 Kỹ thuật Máy tính 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 thầy Trần Đại Dương, 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 TMA Solutions, đã 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 TMA Solutions đã 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 3MỤC LỤC
1 GIỚI THIỆU VỀ CÔNG TY TMA SOLUTIONS 2
1.1 Quá trình hình thành và phát triển của công ty 2
1.2 Chức năng hoạt động và kinh doanh của TMA 2
2 LỊCH LÀM VIỆC TẠI NƠI THỰC TẬP 2
3 NỘI DUNG NHIỆM VỤ CHÍNH ĐƯỢC GIAO 2
3.1 Sơ lược về Spring Boot: 2
3.1.1 Mô hình Spring MVC 2
3.1.2 Giới thiệu về Spring Boot 3
3.2 Nội dung công việc 4
3.2.1 Các phần mềm sử dụng 4
3.2.2 Thiết kế spring boot application đơn giản 5
3.2.3 Java Persistence API (JPA) 7
3.2.4 Katharsis JSON API 10
3.2.5 Testing với Junit và Mockito 13
4 KẾT QUẢ ĐẠT ĐƯỢC QUA KỲ THỰC TẬP 13
4.1 Những kiến thức lý thuyết đã được củng cố 13
4.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 13
5 NHẬN XÉT GÓP Ý VỀ CHƯƠNG TRÌNH ĐÀO TẠO CỦA KHOA 14
6 TÀI LIỆU THAM KHẢO 15
Trang 4NỘI DUNG BÁO CÁO
1 GIỚI THIỆU VỀ CÔNG TY TMA SOLUTIONS
1.1 Quá trình hình thành và phát triển của công ty
o TMA Solutions (tên tiếng Việt: Công ty TNHH Giải Pháp Phần Mềm Tường Minh), được thành lập năm 1997 trong phòng khách nhà Bà Bùi Ngọc Anh với 6 Kỹ sư mới tốt nghiệp
o Năm 1998 Khách hàng đầu tiên đến từ Mỹ và Canada Đến năm 1999, tăng số lượng nhân sự lên 54 kỹ sư, dời đến trụ sở mới tại quận Phú Nhuận (cũng là trụ sở chính của Công ty) 2000, có thêm khách hàng từ Úc, Singapore,
Ấn Độ và Nhật Bản Năm 2003, thành lập trung tâm nghiên cứu và phát triển R&D Số lượng nhân viên lúc này cũng đạt được 200 người
o Năm 2006-2008, TMA thành lập thêm 3 chi nhánh mới ở Nhật bản, Mỹ và ở châu Âu Vào lúc này, TMA bước đầu thâm nhập thị trường châu Âu với các khách hàng từ Đức, Pháp, Đan Mạch Trong khoảng năm 2009-2010, TMA hoàn thành thêm trụ sở thứ sáu của mình tại công viên phần mềm Quang Trung Đồng thời cho ra đời Trung tâm Giải pháp Di Động TMA (TMA Mobile Solutions)
o Năm 2011, TMA thành lập Tech Lab và Trung tâm Thực tập Sinh viên (SDC) nhằm đào tạo và nâng cao trình độ các thế hệ sinh viên, đặc biệt là sinh viên CNTT
Trang 5o Năm 2017, kỉ niệm 20 năm thành lập và phát triển vững mạnh, số lượng kỹ sư CNTT đang làm việc tại TMA đạt hơn 2000 người
o Năm 2018, Khởi công xây dựng công viên sáng tạo TMA tại thành phố Quy Nhơn, tỉnh Bình Định Số lượng nhân viên tại TMA là 2400 kỹ sư
o Đội ngũ kỹ thuật của TMA đã được lựa chọn từ một hồ bơi lớn của nguồn lực CNTT Việt Nam và khả năng của
nó đã được chứng minh trong nhiều dự án thành công TMA cung cấp đầy đủ các dịch vụ phần mềm, từ kiểm tra
và bảo dưỡng để phát triển chu kỳ đầy đủ và giải pháp kết thúc
1.2 Chức năng hoạt động và kinh doanh của TMA
Phát triển phần mềm
o 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, …
o Gia công phần mềm cho các công ty hàng đầu trên thế giới về các lĩnh vực như : network, tài chính, e-commerce, …
Kiểm thử phần mềm
o Kiểm tra toàn bộ hệ thống
o Kiểm soát chất lượng
o Giải pháp kiểm thử phần mềm
o Tự động hóa testing
Thiết kế giao diện(visual design)
Trang 6o Thiết kế apps đa nền tảng ( web, mobile, desktop)
Dịch vụ quản trị hệ thống IT:
o TMA cung cấp dịch vụ như : Cloud and server,
IT security, Application packaging
2 LỊCH LÀM VIỆC TẠI NƠI THỰC TẬP
Thứ 2, thứ 3, thứ 4, thứ 5, thứ 6
13h30 – 17h30
- Nhiệm vụ chính được giao: Tìm hiểu về Spring MVC và phát triển Web API
3 NỘI DUNG NHIỆM VỤ CHÍNH ĐƯỢC GIAO
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 :
Trang 7o 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,…
o Model : Chứa cái nghiệp vụ logic, phương thức xử lý, truy
xuất Database, hàm xử lý, Class,…
o 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 …
3.1.2 Giới thiệu về Spring Boot
o Spring boot là Project nằm trên tầng IO Execution của
Spring MVC Framework
o 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
HTTP RESPONSE
MODEL
HTTP REQUEST
1
2
3
4
5
Hình 1 Mô hình Spring MVC
Trang 8o 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
3.2.1 Các phần mềm sử dụng
o JRE 8, JDK 8
o Intellij idea : Java development
o Maven dependency
game in OOP
cài đặt Maven và config các dependency
Java Persistence API, Katharsis JSON API
testing trên Junit và Mockito
Trang 9o MySQL Workbench.
o Postman for API development
o Git version control
3.2.2 Thiết kế spring boot application đơn giản
o Tạo một maven project:
mvn archetype:generate DgroupId=com.tma
DartifactId=traininglabapi
DarchetypeArtifactId=mavenarchetypequickstart -DinteractiveMode=false
Thư mục chứa application:
Hình 2 Cấu trúc của project Maven
o POM 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 3 Cấu trúc của POM file
Trang 10o 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>
o Bổ sung các @anotation vào Application class:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
Tạo một HelloController Class là controller dùng để test app
o Sau khi run app, truy cập vào localhost:8080/api/ ta được:
Hình 4 HelloControler Class
Trang 113.2.3 Java Persistence API (JPA)
o 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)
o 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>
o Cấu hình MySQL:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
o MySQL query:
CREATE DATABASE IF NOT EXISTS `tlab_db`;
USE `tlab_db`;
DROP TABLE IF EXISTS `subject`;
CREATE TABLE `subject` (
Hình 5 Kết quả sau khi connect tới localhost.
Trang 12`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;
LOCK TABLES `subject` WRITE;
INSERT INTO `subject` VALUES (1,'Spring'), (2,'DOTNET');
UNLOCK TABLES;
Tạo một Subject class trong model package, tiến hành mapping với database:
o Thêm vào HelloController class để test SubjectJpaRepository
@Autowired
private SubjectJpaRepository jpaRepository;
Hình 6 Kết nối java class với database
Trang 13public String index() {
System.out.println("START testing jpa");
List<Subject> subjectList = jpaRepository.findAll(); for (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!";
}
o Truy cập vào server ta được:
3.2.4 Katharsis JSON API
o Tạo repository và thêm các class SubjectRepository và SubjectRepositoryImpl :
Hình 7 Tạo thêm các repository
Trang 14o Thêm KatharsisConfigV3 ở Application class
@SpringBootApplication
@Import ({ KatharsisConfigV3.class })
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args); }
}
o Test các chức năng của RESTful API trên Postman: GET request: http://localhost:9090/api/subjects
Hình 8 GET request
Trang 15o POST request: tạo mới một subject và thông tin của subject
đó sẽ được lưu vào trong database
o PATCH request : chỉnh sửa thông tin của subject có id = 3
Hình 9 POST request
Hình 10 PATCH request
Trang 163.2.5 Testing với Junit và Mockito
o Junit là một framework mã nguồn mở dùng để tạo ra các scrip testing tự động cho Java
o 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
4 KẾT QUẢ ĐẠT ĐƯỢC QUA KỲ THỰC TẬP
4.1 Những kiến thức lý thuyết đã được củng cố
o 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
o Củng cố kỹ năng lập trình, quy trình thiết kế phần mềm
4.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
o 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
o Củng cố kiến thức về Java Web
o Có được các kỹ năng lập kết hoạch và tổ chức công việc hiệu quả
Trang 17o Khả năng học hỏi tìm tòi, nghiên cứu vấn đề mới.
o Khả năng làm việc nhóm
o Trau dồi kỹ năng giao tiếp, kỹ năng Tiếng Anh
o Có một thói quen làm việc tốt
5 NHẬN XÉT GÓP Ý VỀ CHƯƠNG TRÌNH ĐÀO TẠO CỦA KHOA
o Chương trình đào tạo mới của khoa hợp lý hơn so với chương trình đào tạo cũ
o Tổ chức các khóa lập trình nhúng ngắn hạn, dài hạn, các khóa training về kỹ năng lập trình
o Bổ sung thêm các môn về lập trình IOT, trong đó có ứng dụng web và mobile
o Các môn học liên quan đến hệ điều hành như Linux, RTOS, Unix,…
o Tổ chức thường xuyên các hoạt động với doanh nghiệp, để sinh viên có thể nắm bắt được các công nghệ mới, xu hướng nghề nghiệp
Trang 186 TÀI LIỆU THAM KHẢO
[1] https://docs.spring.io/spring/docs/current/spring-framework-reference/ web.html
[2]
https://docs.spring.io/spring-boot/docs/2.1.0.RELEASE/reference/htmlsingl e/
[3] https://docs.oracle.com/javaee/6/tutorial/doc/bnbpz.html
[4] http://jsonapi.org/
[5] https://katharsis-jsonapi.readthedocs.io/en/latest/
[6] Spring Boot in action by Craig Walls