NGUYÊN NHÂN RA ĐỜI SPRING FRAMEWORK Việc phát triển ứng dụng Java gặp phải nhiều thách thức và ràng buộc với việc sử dụng Enterprise Mong muốn đơn giản hóa việc phát triển ứng dụng Ja
Trang 1BOOT
Trang 2GIỚI THIỆU CHUNG
Assignment Sping framework, Spring boot
Short Description Overview of spring framework and spring bootCompare Spring boot to ASP.NET core
Spring boot demo
Technologies/Models/
Tools/Languages Spring, Spring boot, Spring initializr, etc.
Trang 3N Ộ I D U N G
T R Ì N H B ÀY
KHÁI QUÁT SPRING FRAMEWORK
VÀ SPR ING BOOT
SPRING BOOT VS ASP.NET COR E
DEMO SPRING BOOT
Trang 4KHÁI QUÁT SPRING FRAMEWORK VÀ
SPRING BOOT
Trang 5KHÁI QUÁT SPRING FRAMEWORK VÀ
SPRING BOOT
LỊCH SỬ SPRING
FRAMEWORK
Trang 6GIỚI THIỆU SPRING FRAMEWORK
Được tạo ra bởi Rod Johnson và
phát triển bởi Pivotal Software
(hiện nay là VMware) và ra mắt vào
năm 2003
Là một trong những framework
phát triển ứng dụng Java phổ biến
toàn cầu
Đạt được thành công lớn nhờ vào
hiện đại
Trang 7NGUYÊN NHÂN RA ĐỜI SPRING
FRAMEWORK
Việc phát triển ứng dụng Java gặp
phải nhiều thách thức và ràng buộc
với việc sử dụng Enterprise
Mong muốn đơn giản hóa việc phát triển ứng dụng Java, cung cấp một
mô hình lập trình linh hoạt và dễ dùng hơn so với việc sử dụng EJB
Trang 8SPRING FRAMEWORK 1.X
Tập trung vào hai khái niệm chính
thành phần trong ứng dụng một
cách dễ dàng và linh hoạt
Người phát triển có thể xác định và quản lý các bean (đối tượng) trong ứng dụng thông qua cấu hình XML , điều này giúp giảm sự phụ thuộc
cứng giữa các thành phần và tạo điều kiện cho việc kiểm thử và bảo trì dễ dàng hơn
Trang 9• Hỗ trợ cho RESTful web services,
Java Configuration (thay thế cho việc cấu hình bằng XML), JPA-
based transaction management
và hỗ trợ cho Java EE 6
Trang 10SPRING FRAMEWORK 4.X VÀ 5.X
Spring Framework 4.x:
• Hoàn toàn hỗ trợ Java 8
• Các tính năng mới như Lambda
Expression và Stream API
• Tăng cường hỗ trợ WebSocket và
cải thiện xử lý tương tác với
RESTful services
Spring Framework 5.x:
• Hoàn toàn tương thích với Java 8
• Hỗ trợ Reactive Programming với
Spring WebFlux, Reactive Streams và Kotlin
• Tăng cường tích hợp với Spring
Boot, Spring Cloud và Spring Security
Trang 11KẾT LUẬN
Từ khi ra mắt vào năm 2003, Spring
Framework đã trải qua một hành
Trang 12KHÁI QUÁT SPRING FRAMEWORK VÀ
SPRING BOOT
CẤU TRÚC VÀ KIẾN TRÚC CỦA SPRING FRAMEWORK
Trang 13Core container Data
Access/Integration
Spring Framework được chia thành các mô-đun (modules) có tính năng riêng biệt, nhưng lại tương tác tốt với nhau Cấu trúc chính của Spring Framework bao gồm:
CẤU TRÚC CỦA SPRING FRAMEWORK
Trang 14Core Container là một phần quan trọng của Spring Framework, bao gồm
hai mô-đun:
CORE CONTAINER
Spring-core:
• Cung cấp các thành phần cơ bản
như Inversion of Control (IOC) và
Dependency Injection (DI)
Spring-beans:
• Cung cấp các thành phần quản lý
và tạo ra các đối tượng (beans)
Trang 15VÍ DỤ MINH HỌA CORE CONTAINER
public class HelloWorld { private String message;
public void setMessage( String message) { this message = message;
}
public void printMessage() { System out.println( "Message: " + message);
} }
public class Main { public static void main( String [] args) { ApplicationContext context = new ClassPathXmlApplicationContext ( "beans.xml" ); HelloWorld helloWorld = ( HelloWorld ) context.getBean( "helloWorld" );
helloWorld.printMessage();
} }
Trang 16DATA ACCESS/INTEGRATION
Spring Framework cung cấp hỗ trợ
mạnh mẽ cho việc làm việc với cơ sở
khác
Các mô-đun jdbc, spring-tx và spring-orm giúp thực hiện các tác vụ liên quan đến truy cập cơ sở dữ liệu và tích hợp các công nghệ ORM (Object-
như spring-Relational Mapping) như Hibernate
Trang 17VÍ DỤ MINH HỌA DATA ACCESS/INTEGRATION
public interface UserDao { User getUserById( int id);
void saveUser( User user);
public void saveUser( User user) { String sql = "INSERT INTO users (id, username, password) VALUES (?, ?, ?)" ; jdbcTemplate.update(sql, user.getId(), user.getUsername(), user.getPassword()); }
}
public class Main { public static void main( String [] args) { ApplicationContext context = new ClassPathXmlApplicationContext ( "beans.xml" ); UserDao userDao = ( UserDao ) context.getBean( "userDao" );
User user = userDao.getUserById(1);
System out.println(user.getUsername());
} }
Trang 18KIẾN TRÚC CỦA SPRING FRAMEWORK
Kiến trúc của Spring Framework tuân theo mô hình layered architecture
(kiến trúc theo tầng),chia ứng dụng thành các tầng khác nhau có chức
năng riêng:
Presentation Layer:
• Là tầng giao diện người dùng, nơi
xử lý các yêu cầu từ người dùng
Trang 19KIẾN TRÚC CỦA SPRING FRAMEWORK
Data Access Layer:
• Là tầng truy cập dữ liệu, nơi xử lý
các yêu cầu truy cập cơ sở dữ liệu
• Có thể sử dụng các công nghệ
như Spring JDBC, Spring Data JPA
hoặc Spring ORM để làm việc với
• Spring Framework cung cấp các
công nghệ như Spring Integration
và Spring Web Services để hỗ trợ tích hợp dễ dàng
Trang 20KHÁI QUÁT SPRING FRAMEWORK VÀ
SPRING BOOT
SPRING BOOT
Trang 21TỔNG QUAN VỀ SPRING BOOT
Spring Framework, giúp các nhà
phát triển xây dựng ứng dụng web
và dịch vụ RESTful một cách nhanh
chóng và dễ dàng
Spring Boot giúp giảm độ phức tạp của việc cấu hình và triển khai ứng dụng Spring truyền thống bằng
cách sử dụng các tiêu chuẩn và quy
Trang 22MỘT SỐ ĐẶC ĐIỂM NỔI BẬT CỦA SPRING
• Spring Boot cho phép chạy ứng
dụng Java mà không cần cài đặt môi trường server truyền thống như Tomcat hay Jetty
• Ứng dụng Spring Boot được đóng
gói dưới dạng file JAR hoặc WAR
và có thể được chạy một cách đơn giản
Trang 23MỘT SỐ ĐẶC ĐIỂM NỔI BẬT CỦA SPRING
BOOT
Tích hợp dễ dàng:
• Spring Boot tích hợp tốt với nhiều
công nghệ và thư viện phổ biến
trong cộng đồng
• Có thể dễ dàng tích hợp các công
nghệ như Spring Data, Spring
Security, Thymeleaf, và nhiều hơn
nữa vào ứng dụng Spring Boot
Quản lý phụ thuộc:
• Spring Boot giúp quản lý các phụ
thuộc (dependencies) trong ứng dụng một cách tự động và hiệu quả
• Chỉ cần khai báo các phụ thuộc
trong file cấu hình và Spring Boot
sẽ tự động tải về và quản lý phiên bản phù hợp.
Trang 24SPRING BOOT
VS ASP.NET
CORE
Trang 25SPRING BOOT
VS ASP.NET
CORE
NGÔN NGỮ HỖ TRỢ
Trang 26NGÔN NGỮ CỦA ASP.NET
Asp.net thuộc hệ sinh thái Microsoft net, hỗ trợ ngôn ngữ F#, VB nhưng
phổ biến nhất là C# :
C# là ngôn ngữ strongly typed hiệu
quả, được sử dụng chủ yếu cho việc
xây dựng app window và web
Trang 27CÁCH BIÊN DỊCH CỦA C#
Trang 28NGÔN NGỮ CỦA SPRING BOOT
Spring boot thuộc hệ thống spring framework, hỗ trợ ngôn ngữ kotlin ,
Java được xây dựng là một ngôn
Trang 29CÁCH BIÊN DỊCH CỦA JAVA
Trang 30SPRING BOOT
VS ASP.NET
CORE
KIẾN TRÚC VÀ NGUYÊN TẮC
Trang 31KIẾN TRÚC CỦA ASP.NET CORE VÀ SPRING BOOT
Giống Kiến trúc • Tổ chức code của ứng dụng theo lớp (layer) có chức năng riêng biệt layered architecture :
• Các lớp sẽ tương tác với các lớp trên hoặc lớp dưới
Khác Các thành phần được mô đun hóa định hướng microservice Các mô đun thiên hướng monolithic
Trang 32NGUYÊN TẮC CỦA ASP.NET CORE VÀ SPRING BOOT
Trang 33Việc sử dụng 2 principle là DIP và
IoC giúp đạt được loosely coupling
(liên kết lỏng) giữa các lớp (class
not layer) với nhau
Scaling, optimizing và tdd driven-development) dễ dàng và khả thi hơn
Trang 34(test-SPRING BOOT
VS ASP.NET
CORE
XỬ LÝ CUTTING
CROSS-CONCERNS
Trang 35XỬ LÝ CROSS-CUTTING CONCERNS CỦA ASP.NET CORE VÀ SPRING
BOOT
nhưng ảnh hưởng tới nhiều thành phần của hệ thống khác nhau
Asp.net core:
• Sử dụng một khái niệm gọi là
cross-cutting
• Filter Pipeline cho phép ta thêm
các filter vào pipeline xử lý yêu
cầu, mỗi filter có thể thực hiện
một tác vụ cụ thể rồi chuyển yêu
cầu đến filter tiếp theo trong
pipeline
Spring boot:
• Sử dụng mô hình AOP
(aspect-oriented-programming) để xử lý các tác vụ cross-cutting, mô đun hóa các vấn đề đó
• AOP gồm các khái niện như
Joinpoint, Advice, PointCut, Aspect
Trang 36SPRING BOOT
VS ASP.NET
CORE
TRUY CẬP DỮ LIỆU
Trang 37TRUY CẬP DỮ LIỆU TRONG ASP.NET CORE VÀ SPRING BOOT
Asp.net core:
• Phổ biến nhất là thư viện ORM
LINQ (Language Integrated
query) để thao tác truy vấn, một
dạng API được đính kèm trong
ngôn ngữ C# để truy vấn nhiều
loại tài nguyên khác nhau
Spring boot:
• Phổ biến nhất là ORM Hibernate
(được kết hợp với Spring data JPA), với mỗi loại model thì có thể tạo ra lớp repository tương ứng, lớp đó sẽ cung cấp một số
method out of the box như findAll, findById, Ngoài ra, còn
có thể custom query bằng JPQL (Java persistence query
language)
Trang 38DEMO SPRING BOOT
Trang 39DEMO SPRING
BOOT
KHỞI TẠO DỰ
ÁN SPRING BOT
Trang 40MỘT VÀI IDE CHO SPRING BOOT
Một vài IDE phổ biến cho spring boot bao gồm:
Ultimate
Trang 41SPRING INITIALIZR
Spring Boot có một công cụ giúp chúng ta khởi tạo project gọi là Spring Initializr
Spring Initializr có thể truy cập trên
web tại https://start.spring.io/
Với một vài ide như Intellij, Spring Initialir được tích hợp sẵn
Trang 42Ta cần khai báo các thông tin project như:
manager (Maven hoặc Gradle)
SNAPSHOT là bản chưa ổn định
với Spring Boot thì nên chọn Jar để
đỡ cấu hình Tomcat server
tên artifact,
KHỞI TẠO DỰ ÁN SPRING BOOT BẰNG SPRING INITIALZR WEB
Trang 46KHỞI TẠO DỰ ÁN SPRING BOOT BẰNG SPRING INITIALZR INTELLIJ
Trang 48KHỞI TẠO DỰ ÁN SPRING BOOT BẰNG SPRING INITIALZR INTELLIJ