{"id":17734,"date":"2024-08-26T16:27:43","date_gmt":"2024-08-26T09:27:43","guid":{"rendered":"https:\/\/bap-software.net\/?post_type=knowledge&#038;p=17734"},"modified":"2024-08-29T09:01:10","modified_gmt":"2024-08-29T02:01:10","slug":"spring-boot","status":"publish","type":"knowledge","link":"https:\/\/bap-software.net\/vi\/knowledge\/spring-boot\/","title":{"rendered":"Spring Boot: L\u1ef1a ch\u1ecdn t\u1ed1t nh\u1ea5t cho ph\u00e1t tri\u1ec3n \u1ee8ng d\u1ee5ng Java"},"content":{"rendered":"<p><\/p>\n<h2><strong>I. Spring Boot l\u00e0 g\u00ec? Doanh nghi\u1ec7p n\u00ean ch\u1ecdn Spring Boot n\u00e0o?<\/strong><\/h2>\n<h3><strong>1. Spring Boot l\u00e0 g\u00ec?<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Spring Boot l\u00e0 m\u1ed9t framework x\u00e2y d\u1ef1ng tr\u00ean n\u1ec1n t\u1ea3ng Spring MVC, m\u1ed9t <a href=\"https:\/\/bap-software.net\/vi\/knowledge\/java-framework\/\"><strong>framework n\u1ed5i ti\u1ebfng trong Java<\/strong><\/a>. Spring \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf d\u1ef1a tr\u00ean 2 nguy\u00ean t\u1eafc bao g\u1ed3m: Inversion of Control (IOC) v\u00e0 Dependency Insert (DI), gi\u00fap t\u1ea1o ra m\u00e3 linh ho\u1ea1t v\u00e0 d\u1ec5 b\u1ea3o tr\u00ec.\u00a0<\/span><\/p>\n<div id=\"attachment_17738\" style=\"width: 710px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-17738\" class=\"wp-image-17738 size-full\" src=\"https:\/\/cdn.bap-software.net\/2024\/08\/26213247\/spring.jpg\" alt=\"What is Spring Boot?\" width=\"700\" height=\"420\" \/><p id=\"caption-attachment-17738\" class=\"wp-caption-text\">T\u00ecm hi\u1ec3u v\u1ec1 kh\u00e1i ni\u1ec7m Spring Boot (Trung T\u00e2m Java)<\/p><\/div>\n<p><span style=\"font-weight: 400;\">Ban \u0111\u1ea7u, Spring gi\u00fap \u0111\u01a1n gi\u1ea3n h\u00f3a c\u1ea5u h\u00ecnh cho c\u00e1c \u1ee9ng d\u1ee5ng web nh\u01b0ng v\u1eabn c\u00f2n ph\u1ee9c t\u1ea1p do s\u1eed d\u1ee5ng nhi\u1ec1u file XML. \u0110\u1ec3 gi\u1ea3i quy\u1ebft v\u1ea5n \u0111\u1ec1 n\u00e0y, Spring Boot ra \u0111\u1eddi, phi\u00ean b\u1ea3n \u0111\u1ea7u ti\u00ean \u0111\u01b0\u1ee3c ph\u00e1t h\u00e0nh v\u00e0o th\u00e1ng 4 n\u0103m 2014. V\u1edbi kh\u1ea3 n\u0103ng cung c\u1ea5p s\u1eb5n c\u00e1c th\u00e0nh ph\u1ea7n c\u1ea7n thi\u1ebft v\u00e0 t\u00edch h\u1ee3p v\u1edbi m\u00e1y ch\u1ee7 Tomcat, Spring Boot gi\u00fap tri\u1ec3n khai \u1ee9ng d\u1ee5ng nhanh ch\u00f3ng v\u00e0 \u0111\u01a1n gi\u1ea3n h\u01a1n. T\u00f3m l\u1ea1i, Spring Boot l\u00e0 m\u1ed9t framework d\u1ec5 c\u1ea5u h\u00ecnh v\u00e0 s\u1eed d\u1ee5ng \u0111\u1ec3 ph\u00e1t tri\u1ec3n c\u00e1c \u1ee9ng d\u1ee5ng d\u1ef1a tr\u00ean Spring.<\/span><\/p>\n<h3><strong>2. Nh\u1eefng \u0111\u1eb7c \u0111i\u1ec3m ch\u00ednh c\u1ee7a Spring Boot<\/strong><\/h3>\n<div id=\"attachment_17739\" style=\"width: 833px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-17739\" class=\"wp-image-17739 \" src=\"https:\/\/cdn.bap-software.net\/2024\/08\/26213248\/Spring-Boot-Features.png\" alt=\"Spring Boot Features\" width=\"823\" height=\"387\" \/><p id=\"caption-attachment-17739\" class=\"wp-caption-text\">Nh\u1eefng t\u00ednh n\u0103ng ch\u00ednh c\u1ee7a Spring Boot m\u00e0 l\u1eadp tr\u00ecnh vi\u00ean n\u00ean bi\u1ebft! (GeeksforGeeks)<\/p><\/div>\n<ul>\n<li aria-level=\"1\"><b>T\u1ef1 \u0111\u1ed9ng c\u1ea5u h\u00ecnh (Auto Configuration)<\/b><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Spring boot s\u1eed d\u1ee5ng ch\u00fa th\u00edch &#8220;Spring Boot Application&#8221; \u0111\u1ec3 t\u1ef1 \u0111\u1ed9ng thi\u1ebft l\u1eadp \u1ee9ng d\u1ee5ng c\u1ee7a b\u1ea1n d\u1ef1a tr\u00ean c\u00e1c th\u01b0 vi\u1ec7n c\u00f3 trong \u0111\u01b0\u1eddng d\u1eabn. N\u00f3 t\u1ef1 \u0111\u1ed9ng \u0111\u1ecbnh c\u1ea5u h\u00ecnh \u1ee9ng d\u1ee5ng c\u1ee7a b\u1ea1n d\u1ef1a tr\u00ean nh\u1eefng g\u00ec n\u00f3 th\u1ea5y, lo\u1ea1i b\u1ecf nhu c\u1ea7u ch\u1ec9 \u0111\u1ecbnh th\u1ee7 c\u00f4ng c\u00e1c h\u1ea1t trong t\u1ec7p c\u1ea5u h\u00ecnh.<\/span><\/p>\n<ul>\n<li aria-level=\"1\"><b>T\u00ednh \u0111\u1ed9c l\u1eadp (Standalone Nature)<\/b><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">\u1ee8ng d\u1ee5ng Spring Boot c\u00f3 th\u1ec3 ho\u1ea1t \u0111\u1ed9ng \u0111\u1ed9c l\u1eadp m\u00e0 kh\u00f4ng c\u1ea7n m\u00e1y ch\u1ee7 b\u00ean ngo\u00e0i, h\u1ed7 tr\u1ee3 ki\u1ebfn tr\u00fac microservices. M\u00e1y ch\u1ee7 nh\u00fang nh\u01b0 Tomcat \u0111\u01b0\u1ee3c t\u00edch h\u1ee3p, \u0111\u01a1n gi\u1ea3n h\u00f3a qu\u00e1 tr\u00ecnh tri\u1ec3n khai.<\/span><\/p>\n<ul>\n<li aria-level=\"1\"><b>S\u1eb5n s\u00e0ng cho s\u1ea3n xu\u1ea5t (Production Ready)<\/b><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Spring Boot t\u00edch h\u1ee3p c\u00e1c c\u00f4ng c\u1ee5 gi\u00fap ki\u1ec3m tra s\u1ee9c kh\u1ecfe v\u00e0 hi\u1ec7u su\u1ea5t c\u1ee7a \u1ee9ng d\u1ee5ng. M\u00f4-\u0111un Actuator cung c\u1ea5p\u00a0 c\u00e1c endpoint ph\u00f9 h\u1ee3p \u0111\u1ec3 qu\u1ea3n l\u00fd \u1ee9ng d\u1ee5ng m\u1ed9t c\u00e1ch hi\u1ec7u qu\u1ea3 nh\u1ea5t.<\/span><\/p>\n<ul>\n<li aria-level=\"1\"><b>Kh\u00f4ng t\u1ea1o m\u00e3 (No Code Generation)<\/b><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Spring Boot gi\u00fap ph\u00e1t tri\u1ec3n hi\u1ec7u qu\u1ea3 b\u1eb1ng c\u00e1ch t\u1eadp trung v\u00e0o logic nghi\u1ec7p v\u1ee5, lo\u1ea1i b\u1ecf nhu c\u1ea7u c\u1ea5u h\u00ecnh XML v\u00e0 t\u1ea1o m\u00e3.<\/span><\/p>\n<ul>\n<li aria-level=\"1\"><b>C\u1ea5u h\u00ecnh m\u1eb7c \u0111\u1ecbnh (Opinionated Defaults)<\/b><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Cung c\u1ea5p c\u00e1c starter POM v\u1edbi c\u1ea5u h\u00ecnh s\u1eb5n cho m\u00e1y ch\u1ee7 nh\u00fang, JPA v\u00e0 c\u00e1c<strong> <a href=\"https:\/\/bap-software.net\/vi\/services\/\">c\u00f4ng ngh\u1ec7<\/a> <\/strong>kh\u00e1c, gi\u00fap tri\u1ec3n khai nhanh ch\u00f3ng nh\u01b0ng v\u1eabn cho ph\u00e9p t\u00f9y ch\u1ec9nh.<\/span><\/p>\n<ul>\n<li aria-level=\"1\"><b>H\u1ed7 tr\u1ee3 microservices<\/b><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Spring Boot t\u00edch h\u1ee3p d\u1ec5 d\u00e0ng v\u1edbi Spring Cloud, h\u1ed7 tr\u1ee3 x\u00e2y d\u1ef1ng microservices c\u00f3 c\u01a1 s\u1edf d\u1eef li\u1ec7u ri\u00eang, d\u1ec5 m\u1edf r\u1ed9ng v\u00e0 qu\u1ea3n l\u00fd d\u1ecbch v\u1ee5.<\/span><\/p>\n<ul>\n<li aria-level=\"1\"><b>M\u00e1y ch\u1ee7 nh\u00fang (Embedded Servers)<\/b><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">H\u1ed7 tr\u1ee3 c\u00e1c m\u00e1y ch\u1ee7 nh\u00fang ph\u1ed5 bi\u1ebfn nh\u01b0 Tomcat, Jetty, v\u00e0 Undertow, cho ph\u00e9p ch\u1ea1y \u1ee9ng d\u1ee5ng nh\u01b0 m\u1ed9t \u1ee9ng d\u1ee5ng Java \u0111\u1ed9c l\u1eadp m\u00e0 kh\u00f4ng c\u1ea7n file WAR.<\/span><\/p>\n<ul>\n<li aria-level=\"1\"><b>H\u1ed7 tr\u1ee3 plugin m\u1edf r\u1ed9ng<\/b><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Spring Boot c\u00f3 nhi\u1ec1u plugin gi\u00fap x\u00e2y d\u1ef1ng v\u00e0 qu\u1ea3n l\u00fd \u1ee9ng d\u1ee5ng. Ch\u1eb3ng h\u1ea1n nh\u01b0 plugin Spring Boot Maven s\u1ebd cho ph\u00e9p \u0111\u00f3ng g\u00f3i v\u00e0 kh\u1edfi ch\u1ea1y \u1ee9ng d\u1ee5ng m\u1ed9t c\u00e1ch d\u1ec5 d\u00e0ng.<\/span><\/p>\n<ul>\n<li aria-level=\"1\"><b>Kh\u1ea3 n\u0103ng t\u00f9y ch\u1ec9nh<\/b><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">M\u1eb7c d\u00f9 c\u00f3 c\u1ea5u h\u00ecnh m\u1eb7c \u0111\u1ecbnh, Spring Boot v\u1eabn cho ph\u00e9p t\u00f9y ch\u1ec9nh c\u00e1c th\u00e0nh ph\u1ea7n v\u00e0 thi\u1ebft l\u1eadp c\u1ee7a \u1ee9ng d\u1ee5ng.<\/span><\/p>\n<ul>\n<li aria-level=\"1\"><b>M\u1edf r\u1ed9ng (Extensions)<\/b><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">D\u1ec5 d\u00e0ng k\u1ebft n\u1ed1i v\u1edbi c\u00e1c c\u00f4ng c\u1ee5 v\u00e0 th\u01b0 vi\u1ec7n kh\u00e1c th\u00f4ng qua c\u00e1c starter, gi\u00fap t\u00edch h\u1ee3p nhanh ch\u00f3ng c\u00e1c c\u00f4ng ngh\u1ec7 nh\u01b0 JPA, Thymeleaf, v\u00e0 Security.<\/span><\/p>\n<h3><strong>3. Ch\u1ecdn Spring Boot Thymeleaf hay Spring Boot v\u1edbi Angular, React, Vue?<\/strong><\/h3>\n<ul>\n<li><b>Ki\u1ec3u Server Side Rendering (SSR):<\/b><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">S\u1eed d\u1ee5ng Thymeleaf (m\u1ed9t view template engine) \u0111\u1ec3 t\u1ea1o giao di\u1ec7n ng\u01b0\u1eddi d\u00f9ng ph\u00eda m\u00e1y ch\u1ee7. Thymeleaf k\u1ebft h\u1ee3p d\u1eef li\u1ec7u t\u1eeb Spring Boot v\u00e0 t\u1ea1o ra c\u00e1c trang HTML ho\u00e0n ch\u1ec9nh tr\u01b0\u1edbc khi g\u1eedi \u0111\u1ebfn tr\u00ecnh duy\u1ec7t.<\/span><\/p>\n<ul>\n<li><b>Ki\u1ec3u Client Side Rendering (CSR):<\/b><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">S\u1eed d\u1ee5ng c\u00e1c framework nh\u01b0 Angular, React, ho\u1eb7c Vue \u0111\u1ec3 x\u00e2y d\u1ef1ng giao di\u1ec7n ng\u01b0\u1eddi d\u00f9ng ph\u00eda client. C\u00e1c framework n\u00e0y g\u1ecdi v\u00e0o REST API c\u1ee7a Spring Boot \u0111\u1ec3 l\u1ea5y d\u1eef li\u1ec7u v\u00e0 sau \u0111\u00f3 render giao di\u1ec7n tr\u1ef1c ti\u1ebfp tr\u00ean tr\u00ecnh duy\u1ec7t.<\/span><\/p>\n<h4><strong>3.1. Server Side Rendering kh\u00e1c g\u00ec v\u1edbi Client Side Rendering?<\/strong><\/h4>\n<div id=\"attachment_17735\" style=\"width: 810px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-17735\" class=\"wp-image-17735 size-full\" src=\"https:\/\/cdn.bap-software.net\/2024\/08\/26213240\/1_CRiH0hUGoS3aoZaIY4H2yg.png\" alt=\"Server Side Rendering kh\u00e1c g\u00ec v\u1edbi Client Side Rendering?\" width=\"800\" height=\"565\" \/><p id=\"caption-attachment-17735\" class=\"wp-caption-text\">Server Side Rendering kh\u00e1c g\u00ec v\u1edbi Client Side Rendering? Ngu\u1ed3n: LinkedIn<\/p><\/div>\n<ul>\n<li><b>Server-Side Rendering (SSR)<\/b><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">V\u1edbi SSR, n\u1ed9i dung trang \u0111\u01b0\u1ee3c render tr\u00ean m\u00e1y ch\u1ee7 tr\u01b0\u1edbc khi g\u1eedi v\u1ec1 tr\u00ecnh duy\u1ec7t c\u1ee7a ng\u01b0\u1eddi d\u00f9ng, gi\u00fap trang web hi\u1ec3n th\u1ecb ngay l\u1eadp t\u1ee9c v\u1edbi HTML ho\u00e0n ch\u1ec9nh. M\u1ed9t v\u00ed d\u1ee5 \u0111i\u1ec3n h\u00ecnh l\u00e0 s\u1eed d\u1ee5ng Thymeleaf c\u00f9ng v\u1edbi Spring Boot, n\u01a1i c\u00e1c th\u00e0nh ph\u1ea7n HTML \u0111\u01b0\u1ee3c t\u1ea1o v\u00e0 g\u1eedi t\u1eeb ph\u00eda m\u00e1y ch\u1ee7.<\/span><\/p>\n<ul>\n<li><b>Client-Side Rendering (CSR)<\/b><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Trong CSR, trang web ban \u0111\u1ea7u \u0111\u01b0\u1ee3c t\u1ea3i tr\u1ed1ng v\u00e0 sau \u0111\u00f3 JavaScript tr\u00ean tr\u00ecnh duy\u1ec7t ng\u01b0\u1eddi d\u00f9ng s\u1ebd x\u1eed l\u00fd n\u1ed9i dung. C\u00e1c framework nh\u01b0 React, Angular v\u00e0 Vue, \u00e1p d\u1ee5ng CSR \u0111\u1ec3 l\u1ea5y d\u1eef li\u1ec7u t\u1eeb REST API c\u1ee7a Spring Boot.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">S\u1ef1 kh\u00e1c bi\u1ec7t ch\u00ednh gi\u1eefa hai ph\u01b0\u01a1ng ph\u00e1p n\u00e0y l\u00e0 SSR cung c\u1ea5p t\u1ed1c \u0111\u1ed9 t\u1ea3i ban \u0111\u1ea7u nhanh h\u01a1n v\u00e0 th\u00e2n thi\u1ec7n v\u1edbi SEO, nh\u01b0ng y\u00eau c\u1ea7u t\u00e0i nguy\u00ean m\u00e1y ch\u1ee7 l\u1edbn h\u01a1n. Trong khi \u0111\u00f3, CSR gi\u1ea3m t\u1ea3i cho m\u00e1y ch\u1ee7 v\u00e0 cung c\u1ea5p tr\u1ea3i nghi\u1ec7m ng\u01b0\u1eddi d\u00f9ng phong ph\u00fa h\u01a1n sau khi trang t\u1ea3i, nh\u01b0ng c\u00f3 th\u1ec3 g\u1eb7p v\u1ea5n \u0111\u1ec1 v\u1edbi t\u1ed1c \u0111\u1ed9 t\u1ea3i ban \u0111\u1ea7u v\u00e0 SEO do s\u1ef1 ph\u1ee5 thu\u1ed9c v\u00e0o JavaScript.<\/span><\/p>\n<h4><strong>3.2. \u01afu v\u00e0 nh\u01b0\u1ee3c c\u1ee7a t\u1eebng lo\u1ea1i<\/strong><\/h4>\n<p><strong>Server-Side Rendering (SSR)<\/strong><\/p>\n<p><b>\u01afu \u0111i\u1ec3m:<\/b><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">T\u1ed1c \u0111\u1ed9 t\u1ea3i ban \u0111\u1ea7u nhanh: Trang HTML \u0111\u01b0\u1ee3c render tr\u00ean m\u00e1y ch\u1ee7 v\u00e0 g\u1eedi ho\u00e0n ch\u1ec9nh \u0111\u1ebfn tr\u00ecnh duy\u1ec7t, gi\u00fap n\u1ed9i dung hi\u1ec3n th\u1ecb ngay l\u1eadp t\u1ee9c.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Th\u00e2n thi\u1ec7n v\u1edbi SEO: C\u00e1c c\u00f4ng c\u1ee5 t\u00ecm ki\u1ebfm c\u00f3 th\u1ec3 d\u1ec5 d\u00e0ng thu th\u1eadp d\u1eef li\u1ec7u v\u00e0 l\u1eadp ch\u1ec9 m\u1ee5c trang v\u00ec n\u1ed9i dung \u0111\u00e3 \u0111\u01b0\u1ee3c render ho\u00e0n to\u00e0n.<\/span><\/li>\n<\/ul>\n<p><b>Nh\u01b0\u1ee3c \u0111i\u1ec3m:<\/b><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">T\u1ea3i tr\u1ecdng m\u00e1y ch\u1ee7 cao: M\u00e1y ch\u1ee7 ph\u1ea3i x\u1eed l\u00fd vi\u1ec7c render trang cho m\u1ed7i y\u00eau c\u1ea7u h\u1eb3n nhi\u00ean n\u00f3 s\u1ebd d\u1eabn \u0111\u1ebfn t\u00e0i nguy\u00ean m\u00e1y ch\u1ee7 b\u1ecb ti\u00eau t\u1ed1n nhi\u1ec1u.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Th\u1eddi gian ph\u1ea3n h\u1ed3i d\u00e0i h\u01a1n cho t\u01b0\u01a1ng t\u00e1c sau: Sau khi t\u1ea3i trang ban \u0111\u1ea7u, m\u1ecdi thay \u0111\u1ed5i tr\u00ean trang c\u1ea7n g\u1eedi l\u1ea1i y\u00eau c\u1ea7u t\u1edbi m\u00e1y ch\u1ee7 \u0111\u1ec3 render l\u1ea1i, g\u00e2y ra th\u1eddi gian ph\u1ea3n h\u1ed3i ch\u1eadm h\u01a1n.<\/span><\/li>\n<\/ul>\n<div id=\"attachment_17737\" style=\"width: 954px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-17737\" class=\"wp-image-17737 \" src=\"https:\/\/cdn.bap-software.net\/2024\/08\/26213245\/Server-Side-Rendering-vs-Client-Side-Rendering.jpg\" alt=\"Nh\u1eefng t\u00ednh ch\u1ea5t kh\u00e1c nhau gi\u1eefa SSR vs CSR (BKHOST)\" width=\"944\" height=\"530\" \/><p id=\"caption-attachment-17737\" class=\"wp-caption-text\">Nh\u1eefng t\u00ednh ch\u1ea5t kh\u00e1c nhau gi\u1eefa SSR vs CSR (BKHOST)<\/p><\/div>\n<p>&nbsp;<\/p>\n<p><strong>Client-Side Rendering (CSR)<\/strong><\/p>\n<p><b>\u01afu \u0111i\u1ec3m:<\/b><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Tr\u1ea3i nghi\u1ec7m ng\u01b0\u1eddi d\u00f9ng phong ph\u00fa: CSR h\u1ed7 tr\u1ee3 c\u00e1c t\u01b0\u01a1ng t\u00e1c m\u01b0\u1ee3t m\u00e0 v\u00e0 \u0111\u1ed9ng tr\u00ean trang, cung c\u1ea5p tr\u1ea3i nghi\u1ec7m ng\u01b0\u1eddi d\u00f9ng t\u1ed1t h\u01a1n sau khi trang t\u1ea3i xong.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">T\u1ea3i d\u1eef li\u1ec7u linh ho\u1ea1t: C\u00f3 th\u1ec3 t\u1ea3i v\u00e0 c\u1eadp nh\u1eadt d\u1eef li\u1ec7u t\u1eeb REST API m\u00e0 kh\u00f4ng c\u1ea7n t\u1ea3i l\u1ea1i to\u00e0n b\u1ed9 trang.<\/span><\/li>\n<\/ul>\n<p><b>Nh\u01b0\u1ee3c \u0111i\u1ec3m:<\/b><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Th\u1eddi gian t\u1ea3i ban \u0111\u1ea7u l\u00e2u h\u01a1n: Trang ban \u0111\u1ea7u hi\u1ec3n th\u1ecb r\u1ea5t \u00edt n\u1ed9i dung cho \u0111\u1ebfn khi JavaScript \u0111\u01b0\u1ee3c t\u1ea3i v\u00e0 x\u1eed l\u00fd, g\u00e2y ra tr\u1ea3i nghi\u1ec7m ng\u01b0\u1eddi d\u00f9ng k\u00e9m h\u01a1n ban \u0111\u1ea7u.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Y\u00eau c\u1ea7u JavaScript: CSR ph\u1ee5 thu\u1ed9c v\u00e0o JavaScript, n\u00ean kh\u00f4ng ho\u1ea1t \u0111\u1ed9ng t\u1ed1t tr\u00ean c\u00e1c thi\u1ebft b\u1ecb ho\u1eb7c tr\u00ecnh duy\u1ec7t kh\u00f4ng h\u1ed7 tr\u1ee3 JavaScript t\u1ed1t.<\/span><\/li>\n<\/ul>\n<h2><strong>II. Thymeleaf l\u00e0 g\u00ec? C\u00e1ch t\u00edch h\u1ee3p Thymeleaf v\u00e0o Spring Boot<\/strong><\/h2>\n<h3><strong>1. Thymeleaf l\u00e0 g\u00ec?<\/strong><\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-17740 size-full\" src=\"https:\/\/cdn.bap-software.net\/2024\/08\/26213250\/thymeleaf-la-gi-e1724657873922.png\" alt=\"\u0110\u1ecbnh ngh\u0129a v\u1ec1 Thymeleaf\" width=\"650\" height=\"180\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Thymeleaf l\u00e0 m\u1ed9t th\u01b0 vi\u1ec7n m\u00e3 ngu\u1ed3n m\u1edf \u0111\u1ec3 t\u1ea1o v\u00e0 x\u1eed l\u00fd c\u00e1c m\u1eabu HTML5, XHTML ho\u1eb7c XML trong c\u00e1c \u1ee9ng d\u1ee5ng Java. N\u00f3 ho\u1ea1t \u0111\u1ed9ng trong c\u1ea3 m\u00f4i tr\u01b0\u1eddng web v\u00e0 kh\u00f4ng ph\u1ea3i web. Thymeleaf l\u00e0 s\u1ef1 l\u1ef1a ch\u1ecdn ph\u00f9 h\u1ee3p cho vi\u1ec7c ph\u00e1t tri\u1ec3n web hi\u1ec7n \u0111\u1ea1i tr\u00ean n\u1ec1n t\u1ea3ng Java.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Th\u01b0 vi\u1ec7n n\u00e0y hi\u1ec3n th\u1ecb d\u1eef li\u1ec7u ho\u1eb7c v\u0103n b\u1ea3n do \u1ee9ng d\u1ee5ng t\u1ea1o b\u1eb1ng c\u00e1ch \u00e1p d\u1ee5ng c\u00e1c ph\u00e9p bi\u1ebfn \u0111\u1ed5i cho t\u1ec7p m\u1eabu. Thymeleaf t\u00edch h\u1ee3p ho\u00e0n h\u1ea3o v\u1edbi Spring Framework v\u00e0 l\u00e0 m\u1ed9t c\u00f4ng c\u1ee5 h\u1eefu \u00edch \u0111\u1ec3 cung c\u1ea5p n\u1ed9i dung XHTML\/HTML5 trong c\u00e1c \u1ee9ng d\u1ee5ng web.<\/span><\/p>\n<h3><strong>2. C\u00e1ch \u0111\u1ec3 t\u00edch h\u1ee3p Thymeleaf v\u00e0o Spring Boot<\/strong><\/h3>\n<div id=\"attachment_17741\" style=\"width: 710px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-17741\" class=\"wp-image-17741 size-full\" src=\"https:\/\/cdn.bap-software.net\/2024\/08\/26213252\/Thymeleaf-spring-boot-7.jpg\" alt=\"L\u00e0m sao \u0111\u1ec3 th\u00eam Thymeleaf v\u00e0o Spring Boot m\u1ed9t c\u00e1ch \u0111\u01a1n gi\u1ea3n\" width=\"700\" height=\"366\" \/><p id=\"caption-attachment-17741\" class=\"wp-caption-text\">L\u00e0m sao \u0111\u1ec3 th\u00eam Thymeleaf v\u00e0o Spring Boot m\u1ed9t c\u00e1ch \u0111\u01a1n gi\u1ea3n (Quantrimang.com)<\/p><\/div>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\"><strong>B\u01b0\u1edbc 1- Th\u00eam dependency:<\/strong> Th\u00eam Thymeleaf v\u00e0o pom.xml b\u1eb1ng c\u00e1ch th\u00eam <\/span>dependency.<\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\"><strong>B\u01b0\u1edbc 2 &#8211; C\u1ea5u h\u00ecnh Thymeleaf:<\/strong> \u0110\u1ea3m b\u1ea3o r\u1eb1ng c\u1ea5u h\u00ecnh m\u1eb7c \u0111\u1ecbnh c\u1ee7a Thymeleaf trong Spring Boot l\u00e0 \u0111\u1ee7. B\u1ea1n c\u00f3 th\u1ec3 c\u1ea5u h\u00ecnh th\u00eam trong application.properties n\u1ebfu c\u1ea7n thi\u1ebft.<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\"><strong>B\u01b0\u1edbc 3 &#8211; T\u1ea1o template:<\/strong> T\u1ea1o c\u00e1c file HTML trong th\u01b0 m\u1ee5c src\/main\/resources\/templates. \u0110\u00e2y l\u00e0 c\u00e1c file template s\u1ebd \u0111\u01b0\u1ee3c Thymeleaf render.<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\"><strong>B\u01b0\u1edbc 4 &#8211; Controller:<\/strong> T\u1ea1o m\u1ed9t controller trong Spring Boot \u0111\u1ec3 x\u1eed l\u00fd c\u00e1c y\u00eau c\u1ea7u v\u00e0 tr\u1ea3 v\u1ec1 t\u00ean c\u1ee7a template Thymeleaf c\u1ea7n render.<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\"><strong>B\u01b0\u1edbc 5 &#8211; Ch\u1ea1y \u1ee9ng d\u1ee5ng:<\/strong> Kh\u1edfi ch\u1ea1y \u1ee9ng d\u1ee5ng Spring Boot. Thymeleaf s\u1ebd t\u1ef1 \u0111\u1ed9ng render c\u00e1c template d\u1ef1a tr\u00ean d\u1eef li\u1ec7u \u0111\u01b0\u1ee3c cung c\u1ea5p t\u1eeb controller.<\/span><\/p>\n<h3><strong>3. C\u00e1c th\u1ebb Thymeleaf c\u01a1 b\u1ea3n l\u00e0 g\u00ec v\u00e0 c\u00e1ch s\u1eed d\u1ee5ng ch\u00fang?<\/strong><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>th:text:<\/b><span style=\"font-weight: 400;\"> D\u00f9ng \u0111\u1ec3 hi\u1ec3n th\u1ecb n\u1ed9i dung \u0111\u1ed9ng, th\u01b0\u1eddng l\u00e0 gi\u00e1 tr\u1ecb c\u1ee7a m\u1ed9t bi\u1ebfn ho\u1eb7c bi\u1ec3u th\u1ee9c.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>th:if, th:unless: <\/b><span style=\"font-weight: 400;\">D\u00f9ng \u0111\u1ec3 ki\u1ec3m tra \u0111i\u1ec1u ki\u1ec7n v\u00e0 hi\u1ec3n th\u1ecb ho\u1eb7c \u1ea9n c\u00e1c ph\u1ea7n t\u1eed HTML d\u1ef1a tr\u00ean k\u1ebft qu\u1ea3 c\u1ee7a \u0111i\u1ec1u ki\u1ec7n \u0111\u00f3.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>th:switch, th:case:<\/b><span style=\"font-weight: 400;\"> Th\u1ef1c hi\u1ec7n c\u00e1c h\u00e0nh \u0111\u1ed9ng kh\u00e1c nhau d\u1ef1a tr\u00ean gi\u00e1 tr\u1ecb c\u1ee7a m\u1ed9t bi\u1ebfn, t\u01b0\u01a1ng t\u1ef1 nh\u01b0 c\u00e2u l\u1ec7nh switch-case trong c\u00e1c ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>th:fragment:<\/b><span style=\"font-weight: 400;\"> \u0110\u1ecbnh ngh\u0129a m\u1ed9t \u0111o\u1ea1n HTML c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c t\u00e1i s\u1eed d\u1ee5ng nhi\u1ec1u l\u1ea7n trong c\u00e1c template kh\u00e1c.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>th:insert, th:replace:<\/b><span style=\"font-weight: 400;\"> \u0110\u01b0\u1ee3c \u1ee9ng d\u1ee5ng \u0111\u1ec3 ch\u00e8n (thay th\u1ebf) m\u1ed9t ph\u1ea7n c\u1ee7a template b\u1eb1ng m\u1ed9t \u0111o\u1ea1n HTML kh\u00e1c.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>th:field:<\/b><span style=\"font-weight: 400;\"> Li\u00ean k\u1ebft c\u00e1c tr\u01b0\u1eddng trong form v\u1edbi c\u00e1c \u0111\u1ed1i t\u01b0\u1ee3ng trong model, th\u01b0\u1eddng d\u00f9ng \u0111\u1ec3 t\u1ea1o c\u00e1c form \u0111\u0103ng k\u00fd, ch\u1ec9nh s\u1eeda d\u1eef li\u1ec7u.<\/span><\/li>\n<\/ul>\n<h2><strong>III. K\u1ebft lu\u1eadn<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Nh\u00ecn chung, Spring Boot l\u00e0 m\u1ed9t framework m\u1ea1nh m\u1ebd, gi\u00fap \u0111\u01a1n gi\u1ea3n h\u00f3a vi\u1ec7c <a href=\"https:\/\/bap-software.net\/vi\/knowledge\/develop-web-apps-or-mobile-applications\/\"><strong>ph\u00e1t tri\u1ec3n \u1ee9ng d\u1ee5ng web<\/strong><\/a> v\u1edbi t\u00ednh n\u0103ng t\u1ef1 \u0111\u1ed9ng c\u1ea5u h\u00ecnh v\u00e0 h\u1ed7 tr\u1ee3 microservices. T\u00f9y theo nhu c\u1ea7u d\u1ef1 \u00e1n, b\u1ea1n c\u00f3 th\u1ec3 ch\u1ecdn Spring Boot v\u1edbi Thymeleaf cho t\u1ed1c \u0111\u1ed9 t\u1ea3i nhanh v\u00e0 <a href=\"https:\/\/developers.google.com\/search\/docs\/fundamentals\/seo-starter-guide?hl=vi\" rel=\"nofollow\"><strong>th\u00e2n thi\u1ec7n SEO<\/strong><\/a>, ho\u1eb7c k\u1ebft h\u1ee3p v\u1edbi Angular, React, Vue \u0111\u1ec3 t\u1ea1o tr\u1ea3i nghi\u1ec7m ng\u01b0\u1eddi d\u00f9ng phong ph\u00fa. V\u1edbi Thymeleaf, vi\u1ec7c ph\u00e1t tri\u1ec3n giao di\u1ec7n web tr\u1edf n\u00ean \u0111\u01a1n gi\u1ea3n v\u00e0 hi\u1ec7u qu\u1ea3, \u0111\u1eb7c bi\u1ec7t khi t\u00edch h\u1ee3p v\u1edbi Spring Boot.<\/span><\/p>","protected":false},"author":25,"featured_media":17739,"template":"","meta":{"_acf_changed":false},"tags":[],"blog-cat":[2058],"class_list":["post-17734","knowledge","type-knowledge","status-publish","has-post-thumbnail","hentry","blog-cat-technology"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Spring Boot: L\u1ef1a ch\u1ecdn t\u1ed1t nh\u1ea5t cho ph\u00e1t tri\u1ec3n \u1ee8ng d\u1ee5ng Java<\/title>\n<meta name=\"description\" content=\"Spring Boot l\u00e0 m\u1ed9t framework x\u00e2y d\u1ef1ng tr\u00ean n\u1ec1n t\u1ea3ng Spring MVC, m\u1ed9t framework n\u1ed5i ti\u1ebfng trong Java. Spring \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf d\u1ef1a tr\u00ean 2 nguy\u00ean t\u1eafc bao g\u1ed3m:...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/bap-software.net\/vi\/knowledge\/spring-boot\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Spring Boot: L\u1ef1a ch\u1ecdn t\u1ed1t nh\u1ea5t cho ph\u00e1t tri\u1ec3n \u1ee8ng d\u1ee5ng Java\" \/>\n<meta property=\"og:description\" content=\"Spring Boot l\u00e0 m\u1ed9t framework x\u00e2y d\u1ef1ng tr\u00ean n\u1ec1n t\u1ea3ng Spring MVC, m\u1ed9t framework n\u1ed5i ti\u1ebfng trong Java. Spring \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf d\u1ef1a tr\u00ean 2 nguy\u00ean t\u1eafc bao g\u1ed3m:...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bap-software.net\/vi\/knowledge\/spring-boot\/\" \/>\n<meta property=\"og:site_name\" content=\"C\u00f4ng Ty C\u1ed5 Ph\u1ea7n \u0110\u1ea7u T\u01b0 V\u00e0 C\u00f4ng Ngh\u1ec7 BAP\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/bap32\" \/>\n<meta property=\"article:modified_time\" content=\"2024-08-29T02:01:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.bap-software.net\/2024\/08\/26213248\/Spring-Boot-Features.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"470\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@bapsoftware\" \/>\n<meta name=\"twitter:label1\" content=\"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc\" \/>\n\t<meta name=\"twitter:data1\" content=\"21 ph\u00fat\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bap-software.net\\\/vi\\\/knowledge\\\/spring-boot\\\/\",\"url\":\"https:\\\/\\\/bap-software.net\\\/vi\\\/knowledge\\\/spring-boot\\\/\",\"name\":\"Spring Boot: L\u1ef1a ch\u1ecdn t\u1ed1t nh\u1ea5t cho ph\u00e1t tri\u1ec3n \u1ee8ng d\u1ee5ng Java\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bap-software.net\\\/vi\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/bap-software.net\\\/vi\\\/knowledge\\\/spring-boot\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/bap-software.net\\\/vi\\\/knowledge\\\/spring-boot\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/cdn.bap-software.net\\\/2024\\\/08\\\/26213248\\\/Spring-Boot-Features.png\",\"datePublished\":\"2024-08-26T09:27:43+00:00\",\"dateModified\":\"2024-08-29T02:01:10+00:00\",\"description\":\"Spring Boot l\u00e0 m\u1ed9t framework x\u00e2y d\u1ef1ng tr\u00ean n\u1ec1n t\u1ea3ng Spring MVC, m\u1ed9t framework n\u1ed5i ti\u1ebfng trong Java. Spring \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf d\u1ef1a tr\u00ean 2 nguy\u00ean t\u1eafc bao g\u1ed3m:...\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bap-software.net\\\/vi\\\/knowledge\\\/spring-boot\\\/#breadcrumb\"},\"inLanguage\":\"vi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[[\"https:\\\/\\\/bap-software.net\\\/vi\\\/knowledge\\\/spring-boot\\\/\"]]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\\\/\\\/bap-software.net\\\/vi\\\/knowledge\\\/spring-boot\\\/#primaryimage\",\"url\":\"https:\\\/\\\/cdn.bap-software.net\\\/2024\\\/08\\\/26213248\\\/Spring-Boot-Features.png\",\"contentUrl\":\"https:\\\/\\\/cdn.bap-software.net\\\/2024\\\/08\\\/26213248\\\/Spring-Boot-Features.png\",\"width\":1000,\"height\":470,\"caption\":\"Spring Boot Features\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bap-software.net\\\/vi\\\/knowledge\\\/spring-boot\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bap-software.net\\\/vi\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Knowledge\",\"item\":\"https:\\\/\\\/bap-software.net\\\/vi\\\/knowledge\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Spring Boot: L\u1ef1a ch\u1ecdn t\u1ed1t nh\u1ea5t cho ph\u00e1t tri\u1ec3n \u1ee8ng d\u1ee5ng Java\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/bap-software.net\\\/vi\\\/#website\",\"url\":\"https:\\\/\\\/bap-software.net\\\/vi\\\/\",\"name\":\"C\u00f4ng Ty C\u1ed5 Ph\u1ea7n \u0110\u1ea7u T\u01b0 V\u00e0 C\u00f4ng Ngh\u1ec7 BAP\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/bap-software.net\\\/vi\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"vi\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Spring Boot: L\u1ef1a ch\u1ecdn t\u1ed1t nh\u1ea5t cho ph\u00e1t tri\u1ec3n \u1ee8ng d\u1ee5ng Java","description":"Spring Boot l\u00e0 m\u1ed9t framework x\u00e2y d\u1ef1ng tr\u00ean n\u1ec1n t\u1ea3ng Spring MVC, m\u1ed9t framework n\u1ed5i ti\u1ebfng trong Java. Spring \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf d\u1ef1a tr\u00ean 2 nguy\u00ean t\u1eafc bao g\u1ed3m:...","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/bap-software.net\/vi\/knowledge\/spring-boot\/","og_locale":"vi_VN","og_type":"article","og_title":"Spring Boot: L\u1ef1a ch\u1ecdn t\u1ed1t nh\u1ea5t cho ph\u00e1t tri\u1ec3n \u1ee8ng d\u1ee5ng Java","og_description":"Spring Boot l\u00e0 m\u1ed9t framework x\u00e2y d\u1ef1ng tr\u00ean n\u1ec1n t\u1ea3ng Spring MVC, m\u1ed9t framework n\u1ed5i ti\u1ebfng trong Java. Spring \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf d\u1ef1a tr\u00ean 2 nguy\u00ean t\u1eafc bao g\u1ed3m:...","og_url":"https:\/\/bap-software.net\/vi\/knowledge\/spring-boot\/","og_site_name":"C\u00f4ng Ty C\u1ed5 Ph\u1ea7n \u0110\u1ea7u T\u01b0 V\u00e0 C\u00f4ng Ngh\u1ec7 BAP","article_publisher":"https:\/\/www.facebook.com\/bap32","article_modified_time":"2024-08-29T02:01:10+00:00","og_image":[{"width":1000,"height":470,"url":"https:\/\/cdn.bap-software.net\/2024\/08\/26213248\/Spring-Boot-Features.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_site":"@bapsoftware","twitter_misc":{"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"21 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/bap-software.net\/vi\/knowledge\/spring-boot\/","url":"https:\/\/bap-software.net\/vi\/knowledge\/spring-boot\/","name":"Spring Boot: L\u1ef1a ch\u1ecdn t\u1ed1t nh\u1ea5t cho ph\u00e1t tri\u1ec3n \u1ee8ng d\u1ee5ng Java","isPartOf":{"@id":"https:\/\/bap-software.net\/vi\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bap-software.net\/vi\/knowledge\/spring-boot\/#primaryimage"},"image":{"@id":"https:\/\/bap-software.net\/vi\/knowledge\/spring-boot\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.bap-software.net\/2024\/08\/26213248\/Spring-Boot-Features.png","datePublished":"2024-08-26T09:27:43+00:00","dateModified":"2024-08-29T02:01:10+00:00","description":"Spring Boot l\u00e0 m\u1ed9t framework x\u00e2y d\u1ef1ng tr\u00ean n\u1ec1n t\u1ea3ng Spring MVC, m\u1ed9t framework n\u1ed5i ti\u1ebfng trong Java. Spring \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf d\u1ef1a tr\u00ean 2 nguy\u00ean t\u1eafc bao g\u1ed3m:...","breadcrumb":{"@id":"https:\/\/bap-software.net\/vi\/knowledge\/spring-boot\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":[["https:\/\/bap-software.net\/vi\/knowledge\/spring-boot\/"]]}]},{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/bap-software.net\/vi\/knowledge\/spring-boot\/#primaryimage","url":"https:\/\/cdn.bap-software.net\/2024\/08\/26213248\/Spring-Boot-Features.png","contentUrl":"https:\/\/cdn.bap-software.net\/2024\/08\/26213248\/Spring-Boot-Features.png","width":1000,"height":470,"caption":"Spring Boot Features"},{"@type":"BreadcrumbList","@id":"https:\/\/bap-software.net\/vi\/knowledge\/spring-boot\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bap-software.net\/vi\/"},{"@type":"ListItem","position":2,"name":"Knowledge","item":"https:\/\/bap-software.net\/vi\/knowledge\/"},{"@type":"ListItem","position":3,"name":"Spring Boot: L\u1ef1a ch\u1ecdn t\u1ed1t nh\u1ea5t cho ph\u00e1t tri\u1ec3n \u1ee8ng d\u1ee5ng Java"}]},{"@type":"WebSite","@id":"https:\/\/bap-software.net\/vi\/#website","url":"https:\/\/bap-software.net\/vi\/","name":"C\u00f4ng Ty C\u1ed5 Ph\u1ea7n \u0110\u1ea7u T\u01b0 V\u00e0 C\u00f4ng Ngh\u1ec7 BAP","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bap-software.net\/vi\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"vi"}]}},"_links":{"self":[{"href":"https:\/\/bap-software.net\/vi\/wp-json\/wp\/v2\/knowledge\/17734","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bap-software.net\/vi\/wp-json\/wp\/v2\/knowledge"}],"about":[{"href":"https:\/\/bap-software.net\/vi\/wp-json\/wp\/v2\/types\/knowledge"}],"author":[{"embeddable":true,"href":"https:\/\/bap-software.net\/vi\/wp-json\/wp\/v2\/users\/25"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bap-software.net\/vi\/wp-json\/wp\/v2\/media\/17739"}],"wp:attachment":[{"href":"https:\/\/bap-software.net\/vi\/wp-json\/wp\/v2\/media?parent=17734"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bap-software.net\/vi\/wp-json\/wp\/v2\/tags?post=17734"},{"taxonomy":"blog-cat","embeddable":true,"href":"https:\/\/bap-software.net\/vi\/wp-json\/wp\/v2\/blog-cat?post=17734"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}