TRƯỜ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:
Lớp:
CE501.J11
Người hướng dẫn: KS. Trần Đại Dương
Thành phố Hồ Chí Minh – Năm 2018
LỜ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.
MỤ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
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
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
NỘ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.
o 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)
o 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
Sáng
Thứ 2, thứ 3, thứ 4, thứ 5, thứ 6
9h00 – 12h00
(từ 09/07/2018 đến 27/09/2018)
Thứ 7, Chủ nhật.
-
Chiều
13h30 –
17h30
Nghỉ hàng tuần
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 :
o Controller : Giữ nhiệm vụ điều hướng các yêu cầu từ người
Database
Database
dùng, chứa logic doanh nghiệp, đảm nhậnBROWSER
yêu cầu từ phía
BROWSER
4
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
MODEL
MODEL
hợp các form hoặc file HTML, CSS, templates ….
1
5
CONTROLLER
CONTROLLER
2
HTTP
REQUEST
3
VIEW
VIEW
HTTP
RESPONSE
Hình 1 Mô hình Spring MVC
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.
o 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
Thời gian
Công việc
9/7 – 13/7/2018
Review Java Core
16/7- 20/7/2018
Review Java OOP
23/7 – 27/7/2018
Design Robot Movement
30/7 – 10/8/2018
game in OOP
Đọc tài liệu về Spring Boot và
cài đặt Maven và config các
13/8 – 24/8/2018
dependency.
Cài đặt MySQL, Tìm hiểu về
Java Persistence API,
27/8 – 31/8/2018
Katharsis JSON API.
Đọc tài liệu làm quen với
testing trên Junit và Mockito.
3/9 – 21/9/2018
Thiết kế web API .
3.2.1 Các phần mềm sử dụng
o
o
o
o
o
o
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
o Tạo một maven project:
mvn archetype:generate -DgroupId=com.tma
-DartifactId=training-lab-api -DarchetypeArtifactId=mavenarchetype-quickstart -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
POM file
o Thêm Spring
boottrúc
vàocủa
project:
Thêm dependency vào POM.xml
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starterparent</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.
Hình 4 HelloControler Class
o Sau khi run app, truy cập vào localhost:8080/api/ ta được:
Hình 5 Kết quả sau khi connect tới localhost.
3.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` (
`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:
Hình 6 Kết nối java class với database
o Thêm vào HelloController class để test SubjectJpaRepository
@Autowired
private SubjectJpaRepository jpaRepository;
@RequestMapping("/")
public 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
o 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
o 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 9 POST request
o PATCH request : chỉnh sửa thông tin của subject có id = 3.
Hình 10 PATCH request
3.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ả
o 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.
6.
TÀI LIỆU THAM KHẢO
[1] />[2] />[3] />[4] />[5] />[6] Spring Boot in action by Craig Walls.