Dependency upgrades
Some dependencies have been upgraded in Spring Boot v2.2.1 are as follows:
- Mongodb 3.11.2
- Spring Security 5.2.1.RELEASE
- Slf4j 1.7.29
- Spring Hateoas 1.0.1.RELEASE
- Hibernate Validator 6.0.18.Final
- Hibernate 5.4.8.Final
- Jetty 9.4.22.v20191022
- Spring Framework 5.2.1
- Spring AMQP 2.2.1
- H2 1.4.200
- Spring Security 5.2
- Spring Batch 4.2
Some important and widely used third-party dependencies are upgraded in this release are as follows:
- Micrometer 1.3.1
- Flyway 6.0.7
- Elasticsearch 6.8.4
- JUnit 5.5
- Jackson 2.10
Những kiến thức cần có khi học Spring Boot
Ngoài việc hiểu rõ được khái niệm về Sping Boot và những ưu điểm, đặc tính mà nó mang lại, thì bạn cũng cần biết thêm một số kiến thức cần có khi học Sping Boot dưới đây để sử dụng nó một cách hiệu quả.
4.Java Core
Trước khi học về Sping Boot thì Java Core là kiến thức không thể thiếu:
- Java cơ bản: Hàm, biến, vòng lặp,…
- Hướng đối tượng OOP trong Java.
- Các tính năng mới trong Java 8.
- Biết cách sử dụng các collection API thông dụng và quan trọng.
- Ngoài ra còn một số những yếu tố khác mà bạn nên tìm hiểu mặc dù Spring Boot ít khi sử dụng đến như Asynchronous, Stream API, Multithreading và File IO.
4.Template engine
Sử dụng template engine giúp xử lý view trong các ứng dụng MVC để pass dữ liệu vào view và trả về một trang HTML cơ bản trong Spring Boot. Ngoài ra, bạn cũng nên tìm hiểu thêm về cách sử dụng Thymeleaf và JSP trong Sping Boot.
4.Package manager
Để quản lý các thư viện được cài thêm, các package manager là công cụ không thể thiếu trước khi code dự án Spring Boot. Java có hai package manager tương tự với NPM và Yarn của Javascript là Gradle và Maven. Bạn nên tìm hiểu về cách dùng của 2 loại package manager này.
Tuy nhiên, phần này không cần thiết phải hiểu quá sâu. Một số nội dung bạn cần biết là chỉnh sửa thông tin project, cài đặt và xóa thư viện,…
4.JPA/MongoDB
Một số kiến thức bạn cần tìm hiểu trong phần này bao gồm:
- Cách tạo cấu hình database trong Sping Boot.
- Cấu trúc các lớp và interface của JPA/MongoDB.
- Các thao tác CRUD cơ bản.
- Tự động tạo các câu yêu cầu query dựa vào tên method.
- Sử dụng MongoTemplate để thực hiện các câu query phức tạp.
- Phân trang và sắp xếp các dữ liệu query.
Cần tìm hiểu những gì
2.Java Core
Trước khi học Spring Boot thì các bạn cần biết Java. Một số kiến thức cần thiết của Java như sau:
- Java cơ bản: biến, hàm, vòng lặp,…
- Hướng đối tượng (OOP)
- Java 8: các tính năng mới trong java 8 (tối thiểu phải biết)
- Collections API: biết cách dùng các collection thông dụng (quan trọng)
Ngoài ra các bạn có thể tìm hiểu thêm (không biết cũng không sao vì Spring Boot khá ít đụng tới):
- Stream API
- Asynchronous
- Multi threading
- File IO
2.Package manager
Khi code dự án Spring Boot thì cần có package manager để quản lý các thư viện cài thêm. Bạn nào code Javascript sẽ biết về NPM và Yarn, thì Java cũng có hai package manager tương tự là Maven và Gradle.
-
Tìm hiểu cách dùng Maven cơ bản
-
Tìm hiểu cách dùng Gradle cơ bản
Phần này khi mới bắt đầu không nên tìm hiểu quá sâu, chỉ cần biết cách cài đặt thư viện, xóa thư viện, chỉnh sửa thông tin project, các build-in tasks là được. Sau này khi đụng tới nhiều thì bạn tự khắc quen thôi.
2.Spring Boot
Cách học Spring Boot đúng đắn là học thực hành, làm project. Bởi vì nhiều thứ trong Spring Boot rất dễ, hoặc thành chuẩn mực rồi, chủ yếu là bạn đã từng đụng tới chưa thôi.
-
Học Spring Boot bắt đầu từ đâu: Bài giới thiệu lộ trình học hôm nay.
-
Tạo dự án Spring Boot đầu tiên: Dùng Spring Initializr để generate code, chọn các dependency, chạy, debug, build JAR và chạy file JAR đó.
-
Luồng đi trong Spring Boot: Tìm hiểu một service Spring Boot gồm những thành phần nào, và luồng đi của dữ liệu ra sao.
-
Dependency injection áp dụng vào Spring Boot như thế nào (phần 1)
-
Dependency injection áp dụng vào Spring Boot như thế nào (phần 2)
-
Bean và ApplicationContext là gì trong Spring Boot: Tìm hiểu cơ bản về Bean và ApplicationContext.
-
Vòng đời, các loại bean và cơ chế component scan: Tìm hiểu sâu hơn về cách các bean được định nghĩa và xử lý.
-
Cấu trúc một dự án Spring Boot thế nào cho chuẩn: Tìm hiểu các thành phần cơ bản như Controller, Services,… và cách tổ chức chúng trong source code.
-
Entity, DTO và Model: Ba đối tượng chứa dữ liệu chính và cách convert, mapping qua lại giữa chúng.
-
Spring Boot xử lý request trong controller như thế nào (phần 1): Cách controller hoạt động, các loại HTTP method và nhận dữ liệu từ request.
-
Spring Boot xử lý request trong controller như thế nào (phần 2)
-
Xử lý request trong Controller (phần 2): Trả về lỗi và xử lý chuyên dụng với các loại data đặc biệt.
-
Validation dữ liệu request – luôn luôn cần thiết
-
Tổ chức code service trong Spring Boot: bài ngắn gọn nói sơ qua về vai trò của service layer.
-
Xử lý exception hiệu quả trong Spring Boot: Cách tạo Aspect để bắt exception dù nó ném ra ở bất cứ đâu.
-
Cấu hình Spring Boot trong file application.properties: đó là gì và kĩ thuật chia cấu hình hiệu quả.
-
HTML template và static content: Thư mục template và static là gì, có chức năng như thế nào?
-
Scheduled job trong Spring Boot: Tạo và thực hiện tác vụ theo lịch trình đặt sẵn.
-
Lập trình hướng khía cạnh AOP không khó như bạn nghĩ: Tìm hiểu về AOP, các khái niệm liên quan và thực hiện một demo logging cơ bản.
2.JPA/MongoDB
Mình chỉ mới làm quen với Spring Boot được 6 tháng, và project mình làm chỉ về MongoDB thôi. Còn về SQL thì mình sẽ làm sau nhé
-
Cách cấu hình database trong Spring Boot: Tạo DB, thêm các thông số kết nối và kết nối.
-
Cấu trúc lớp và interface của JPA: JPA/MongoDB gồm những interface, class nào, phân cấp ra sau và chức năng của chúng.
-
CRUD cơ bản: Tìm hiểu các thao tác cơ bản CRUD.
-
Query creation: Tự động sinh câu query dựa trên tên method, hoặc bạn có thể custom nó bằng @Query.
-
Thực hiện các câu query phức tạp bằng MongoTemplate: Sử dụng MongoTemplate và các đối tượng như Query, Update,… để thực hiện các hành động phức tạp hơn với query.
-
Sắp xếp và phân trang data query được: Sort và paging dữ liệu query, đặc biệt là custom paging bằng skip và limit.
-
Thực hiện aggregation: Tổng hợp dữ liệu trong MongoDB
2.Template engine
Template engine xử lý phần View trong ứng dụng MVC, trong Spring Boot thì chúng ta sử dụng template engine để pass dữ liệu vào View và trả về một trang HTML.
-
Trả về trang HTML cơ bản trong Spring Boot
-
Sử dụng Thymeleaf trong Spring Boot
-
Sử dụng JSP trong Spring Boot
2.Các tool khác
Ngoài ra, trong dự án Spring Boot sẽ cần một số tool khác được embed vào code. Và bạn cần biết cấu hình và sử dụng chúng để nâng cao năng suất code.
-
Cấu hình và sử dụng Swagger trong Spring Boot: Swagger là một tool dùng để xem, chạy, test các API tương tự Postman. Đặc biệt là nó được kèm theo trong chính project của bạn, nó sẽ tự động phân tích metadata của code và sinh API. Ngoài ra Swagger còn có thể generate document từ code của bạn.
-
Thiết lập Logger cho project Spring Boot
-
Lombok – viết code Java ngắn hơn
-
Cấu hình Spring Actuator: Công cụ giám sát, theo dõi tình trạng web service Spring Boot. Actuator sẽ thêm 1 số API để bạn dùng, ví dụ /info hoặc /health để check tình trạng hoạt động của project.
-
Quarzt – giải pháp thay thế cho Spring Schedule
-
Cấu hình Firebase trong Spring Boot: Sử dụng các tính năng của Firebase như Authentication, Firestore, Storage,… trong dự án Spring Boot.
-
Cấu hình Spring Boot devtools: Để có được các tính năng như HotReload.
2.Nâng cao
-
Unit testing: Sử dụng JUnit để test ứng dụng Spring Boot.
-
Xuất file Excel trong Spring Boot: Sử dụng Apache POI để tạo và xuất file Excel.
-
Cách thêm SSL cho Spring Boot: Làm cho API của bạn hỗ trợ HTTPS
-
Cách gửi mail trong Spring Boot
-
Cách cấu hình trang 404 và white page
2.What’s next?
Sau khi đã nắm được đủ các kiến thức trên, các bạn có thể tìm hiểu thêm một số thứ khác liên quan Spring Boot.
-
Tìm hiểu Spring Security cơ bản
-
Xác thực người dùng trong Spring Security bằng session
-
Xác thực người dùng trong Spring Security bằng JWT
-
Spring batch là gì?
-
Spring reactive web: Web framework bất đồng bộ tương tự Node.js nhưng là Java.
Spring Boot mặc định sử dụng ngôn ngữ Java, các bạn có thể tìm hiểu thêm về Kotlin cũng khá hay.
Ưu điểm của Spring Boot
Với mục đích ra đời rất rõ ràng của mình, Spring Boot đã khắc phục được những hạn chế về cấu hình của Spring. Dưới đây, Stringee sẽ giới thiệu thêm đến bạn một số lợi ích của Spring Boot.
Những ưu điểm đó bao gồm:
- Hội tụ đầy đủ các tính năng của Spring framework.
- Đơn giản hóa cấu hình và xây dựng được các ứng dụng độc lập có khả năng chạy bằng “java -jar” nhờ các dependency starter.
- Dễ dàng deploy vì các ứng dụng server được nhúng trực tiếp vào ứng dụng để tránh những khó khăn khi triển khai lên môi trường production mà không cần thiết phải tải file WAR.
- Cấu hình ít, tự động hỗ trợ bất cứ lúc nào cho chức năng giống với Sping như tăng năng suất, giảm thời gian viết code và không yêu cầu XML config.
- Cung cấp nhiều plugin, số liệu, cấu hình ứng dụng từ bên ngoài.
Deprecations in Spring Boot 2.2
- The property logging.file has renamed to logging.file.name.
- The property logging.path has renamed to logging.file.path.
- The server.connection-timeout property has been deprecated in favor of server-specific properties.
- Joda time support is deprecated in favor of java.time.
The following improvements are made in the Spring Boot 2.2.1
- Java: Spring Boot 2.2.1
- Spring Framework 5.2: This release of Spring Boot upgrades to Spring Framework to 5.2.
- JMX is disabled: In this version, JMX is not enabled by default. We can enable it by using the property jmx.enabled=true. If you are using the IDE feature to monitor your application, we need to enable it.
- Fork enabled by default: Spring Boot application that ran by Maven Plugin is now forked by default.
- JUnit 5: Spring Boot v2.2.1 provides JUnit 5 by default. JUnit 5’s vintage engine is also included by default that supports existing JUnit 4-based test classes. We can also use JUnit 4 and JUnit 5 based test classes in the same module.
- AssertJ 3.12: This release of Spring Boot upgrades to AssertJ 3.12. It contains a breaking API changes for assertions related to Iterator.
- Hibernate Dialect: In the newer version of Spring Boot, Hibernate chose the dialect to use rather than applying a default dialect based on the detected database.
- Gradle Requirements: The latest version of Spring Boot requires Gradle 4.10.
Học Spring Boot bắt đầu từ đâu?
Spring Boot 2.0
Let’s have a sneak peek at Spring Boot 2.0.
-
What’s New
Infrastructure Upgrade
Spring Framework 5 -
What’s Changed
Configuration Properties
Gradle Plugin
Actuators endpoints -
What’s Evolving
Security
Metrics
The pivotal team has upgraded the infrastructure in which the following tools are involved:
- Supports Java 8 or above versions
- Supports Apache Tomcat 8 or above versions
- Supports Thymeleaf 3
- Supports Hibernate 5.2
In Spring Framework 5, the Pivotal team upgraded the following:
-
Reactive Spring
-
Servlet stack
- Servlet Container
- Servlet API
- Spring MVC
-
Reactive Stack
- Netty, Servlet 3.1, Undertow
- Reactive HTTP Layer
- Spring WebFlux
-
Servlet stack
- Functional API
- Kotlin Support
The latest version of Spring Boot is 2.2.1. This release of Spring Boot includes 110 fixes, dependency upgrades, and improvements.
In the Spring Boot v2.2.1, the annotation @ConfigurationProperties scanning is now disabled by default. We need to be explicitly opted into by adding the @ConfigurationPropertiesScan annotation.
Các đặc tính cơ bản của Spring Boot là gì?
Vì là một framework RAD nên Spring Boot mang trong nó nhiều đặc tính nổi trội phục vụ cho việc phát triển và cài đặt nhanh một ứng dụng chạy trên Java.
Đặc tính đầu tiên có thể kể đến đó là Spring Boot cung cấp sẵn cho chúng ta một lớp có chứa hàm main và được hoạch định làm điểm mở đầu cho toàn bộ chương trình. Lớp này được đặt tên là Spring Application, nó giúp khởi chạy các ứng dụng từ hàm main, khi chạy nó chúng ta chỉ cần gọi phương thức run.
Spring Boot giúp giảm bớt độ phức tạp trong việc cấu hình ứng dụng trong trường hợp chúng ta sử dụng nhiều môi trường. Với Profiles, Spring Boot cung cấp cho người sử dụng một cách phân chia cấu hình cho từng môi trường. Các bên thực hiện việc cấu hình ứng dụng hoàn toàn có thể được đánh dấu profiles để giới hạn thời điểm hay môi trường mà nó sẽ được tải các cấu hình lên ứng dụng.
Externalized Configurations: Externalized Configuration cho phép bạn có khả năng cấu hình được từ bên ngoài. Vì vậy, một ứng dụng được xây dựng có thể được vận hành và hoạt động trên nhiều môi trường khác nhau. Để thực hiện Externalized Configuration bạn có thể sử dụng các file properties, YAML, các tham số command line hay các biến môi trường.
Đặc tính cuối cùng mà bạn nên biết đó là tất cả các tính năng log nội bộ của Spring Boot đều sử dụng common logging. Chúng được quản lý một cách mặc định, vì vậy bạn không nên sửa các dependency logging nếu không được yêu cầu.
>>> Xem thêm bài viết:
– Khai báo và sử dụng mảng các đối tượng trong Java
– Phân biệt ArrayList, Set và Vector trong Java
– Lập trình đa luồng là gì? Hướng dẫn lập trình đa luồng bằng ngôn ngữ Java
Helpful Links
Spring:
Java 8:
http://www.baeldung.com/java-8-functional-interfaces
http://winterbe.com/posts/2015/05/22/java8-concurrency-tutorial-atomic-concurrent-map-examples/
https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html
http://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/
http://www.oracle.com/technetwork/articles/java/ma14-java-se-8-streams-2177646.html
https://docs.oracle.com/javase/tutorial/essential/io/pathOps.html
https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html
http://www.baeldung.com/foreach-java
http://winterbe.com/posts/2015/03/25/java8-examples-string-number-math-files/
http://www.baeldung.com/java-8-comparator-comparing
http://www.baeldung.com/java-8-sort-lambda
https://dzone.com/articles/java-8-friday-goodies-new-new
Available API’s
Greetings
GET /
Get all Topics in List
GET /topic
Get Topic of given ID
GET /topic/{id}
Add Topic in List
POST /topic
Update Topic of given ID
PUT /topic/{id}
Delete Topic of given ID
DELETE /topic/{id}
Get all Topics whose ID’s length is greater than minLength
GET /topic/minimum/length/{minLength}
Get all Topics sorted by ID
GET /topic/sort
String Operations on Topic List
GET /topic/string/operation
File Operations on Topic List
GET /topic/file/operation
Java 8 Date Time example
GET /datetime
Prerequisites
- Java sdk
- POSTMAN
Installing
1) Download or clone 2) Import the project 3) Run on location machine 4) Open Postman, to call API's ( localhost:8080 )
What to Read Next
Hopefully, this section provided some of the Spring Boot basics and got you on your way to writing your own applications. If you are a task-oriented type of developer, you might want to jump over to spring.io and follow some of the getting started guides that solve specific “How do I do that with Spring?” problems. We also have Spring Boot-specific “How-to” reference documentation.
Otherwise, the next logical step is to read using.html. If you are really impatient, you could also jump ahead and read about Spring Boot features.
Introducing Spring Boot
Spring Boot helps you to create stand-alone, production-grade Spring-based applications that you can run. We take an opinionated view of the Spring platform and third-party libraries, so that you can get started with minimum fuss. Most Spring Boot applications need very little Spring configuration.
You can use Spring Boot to create Java applications that can be started by using
java -jar
or more traditional war deployments.
Our primary goals are:
-
Provide a radically faster and widely accessible getting-started experience for all Spring development.
-
Be opinionated out of the box but get out of the way quickly as requirements start to diverge from the defaults.
-
Provide a range of non-functional features that are common to large classes of projects (such as embedded servers, security, metrics, health checks, and externalized configuration).
-
Absolutely no code generation (when not targeting native image) and no requirement for XML configuration.
Performance Improvements
In Spring Boot 2.2.1 the following performance has been improved:
Lazy Initialization
In Spring Boot 2.2.1, we can enable global lazy initialization by using the property spring.main.lazy-initialization property. It reduces the application startup time.
Java 13 Support
Spring Boot 2.2.1 now supports the latest version of Java that is Java 13.
Immutable Binding
In the newer version of Spring Boot, Configuration properties support constructor-based binding. The class annotates with @ConfigurationProperties annotation is to be immutable. It can be enabled by adding an annotation @ConfugurationProperties to a class or one of its constructors with @ConstructorBinding.
RSocket Support
It is a part of Spring Security. RSocket integration is auto-configured when an application finds spring-security-rsocket is present on the classpath.
Get ahead
VMware offers training and certification to turbo-charge your progress.
Learn more
Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can “just run”.
We take an opinionated view of the Spring platform and third-party libraries so you can get started with minimum fuss. Most Spring Boot applications need minimal Spring configuration.
If you’re looking for information about a specific version, or instructions about how to upgrade from an earlier release, check out the project release notes section on our wiki.
You can also join the Spring Boot community on Gitter!
Bootstrap your application with Spring Initializr.
I was trying to create a Spring Boot 3.0.5 application, along with Java 8 in Spring Starter. Screenshot shared below
Post which I checked the Explore button which helps in identifying what code will look like.
However, I found
sourceCompatibility = '17'
I did not expect that as I had selected Java 8 in above screen. Am I missing something here?
I was trying to create a Spring Boot 3.0.5 application, along with Java 8 in Spring Starter. Screenshot shared below
Post which I checked the Explore button which helps in identifying what code will look like.
However, I found
sourceCompatibility = '17'
I did not expect that as I had selected Java 8 in above screen. Am I missing something here?
springboot-java8
The project is made on spring boot. The project summarize the new features present in Java 8. It contain list of harcoded topics list. You can call the apis’s with POSTMAN to add,delete,update Topic list In addition, it uses
- Java 8 NIO methods
- String operations
- Stream operations
- IntStream functions
- Functional interface
- Lambda functions
- Optional datatype
- Foreach loops
- Default and Static methods in interface
- Java 8 LocalDateTime API
- Pattern
Kết
Như đã thấy được xuyên suốt bài viết, sự ra đời của Sping Boot là điều tất yếu nhằm khắc phục được những hạn chế về cấu hình của Spring framework. Hy vọng, với một số những thông tin trong bài viết, bạn đã hiểu được Sping Boot là gì và những kiến thức cơ bản có liên quan đến nó.
Stringee Communication APIs là giải pháp cung cấp các tính năng giao tiếp như gọi thoại, gọi video, tin nhắn chat, SMS hay tổng đài CSKH cho phép tích hợp trực tiếp vào ứng dụng/website của doanh nghiệp nhanh chóng. Nhờ đó giúp tiết kiệm đến 80% thời gian và chi phí cho doanh nghiệp bởi thông thường nếu tự phát triển các tính năng này có thể mất từ 1 – 3 năm.
Bộ API giao tiếp của Stringee hiện đang được tin dùng bởi các doanh nghiệp ở mọi quy mô, lĩnh vực ngành nghề như TPBank, VOVBacsi24, VNDirect, Shinhan Finance, Ahamove, Logivan, Homedy, Adavigo, bTaskee…
Quý bạn đọc quan tâm xin mời đăng ký NHẬN TƯ VẤN TẠI ĐÂY:
System Requirements
Spring Boot 3.2.2 requires Java 17 and is compatible up to and including Java 21. Spring Framework 6.1.3 or above is also required.
Explicit build support is provided for the following build tools:
Build Tool | Version |
Maven |
3.6.3 or later |
Gradle |
7.x (7.5 or later) and 8.x |
2.Servlet Containers
Spring Boot supports the following embedded servlet containers:
Name | Servlet Version |
Tomcat 10.1 |
6.0 |
Jetty 12.0 |
6.0 |
Undertow 2.3 |
6.0 |
You can also deploy Spring Boot applications to any servlet 5.0+ compatible container.
2.GraalVM Native Images
Spring Boot applications can be converted into a Native Image using GraalVM 22.3 or above.
Images can be created using the native build tools Gradle/Maven plugins or
native-image
tool provided by GraalVM.
You can also create native images using the native-image Paketo buildpack.
The following versions are supported:
Name | Version |
GraalVM Community |
22.3 |
Native Build Tools |
0.9.28 |
Installing Spring Boot
Spring Boot can be used with “classic” Java development tools or installed as a command line tool. Either way, you need Java SDK v17 or higher. Before you begin, you should check your current Java installation by using the following command:
$ java -version
If you are new to Java development or if you want to experiment with Spring Boot, you might want to try the Spring Boot CLI (Command Line Interface) first. Otherwise, read on for “classic” installation instructions.
3.Installation Instructions for the Java Developer
You can use Spring Boot in the same way as any standard Java library.
To do so, include the appropriate
spring-boot-*.jar
files on your classpath.
Spring Boot does not require any special tools integration, so you can use any IDE or text editor.
Also, there is nothing special about a Spring Boot application, so you can run and debug a Spring Boot application as you would any other Java program.
Although you could copy Spring Boot jars, we generally recommend that you use a build tool that supports dependency management (such as Maven or Gradle).
3.1.Maven Installation
Spring Boot is compatible with Apache Maven 3.6.3 or later. If you do not already have Maven installed, you can follow the instructions at maven.apache.org.
On many operating systems, Maven can be installed with a package manager. If you use OSX Homebrew, try |
Spring Boot dependencies use the
org.springframework.boot
group id.
Typically, your Maven POM file inherits from the
spring-boot-starter-parent
project and declares dependencies to one or more “Starters”.
Spring Boot also provides an optional Maven plugin to create executable jars.
More details on getting started with Spring Boot and Maven can be found in the Getting Started section of the Maven plugin’s reference guide.
3.1.Gradle Installation
Spring Boot is compatible with Gradle 7.x (7.5 or later) and 8.x. If you do not already have Gradle installed, you can follow the instructions at gradle.org.
Spring Boot dependencies can be declared by using the
org.springframework.boot
group
.
Typically, your project declares dependencies to one or more “Starters”.
Spring Boot provides a useful Gradle plugin that can be used to simplify dependency declarations and to create executable jars.
More details on getting started with Spring Boot and Gradle can be found in the Getting Started section of the Gradle plugin’s reference guide.
3.Installing the Spring Boot CLI
The Spring Boot CLI (Command Line Interface) is a command line tool that you can use to quickly prototype with Spring.
You do not need to use the CLI to work with Spring Boot, but it is a quick way to get a Spring application off the ground without an IDE.
3.2.Manual Installation
You can download the Spring CLI distribution from one of the following locations:
Once downloaded, follow the INSTALL.txt instructions from the unpacked archive.
In summary, there is a
spring
script (
spring.bat
for Windows) in a
bin/
directory in the
.zip
file.
Alternatively, you can use
java -jar
with the
.jar
file (the script helps you to be sure that the classpath is set correctly).
3.2.Installation with SDKMAN!
SDKMAN! (The Software Development Kit Manager) can be used for managing multiple versions of various binary SDKs, including Groovy and the Spring Boot CLI. Get SDKMAN! from sdkman.io and install Spring Boot by using the following commands:
$ sdk install springboot $ spring --version Spring CLI v3.2.2
If you develop features for the CLI and want access to the version you built, use the following commands:
$ sdk install springboot dev /path/to/spring-boot/spring-boot-cli/target/spring-boot-cli-3.2.2-bin/spring-3.2.2/ $ sdk default springboot dev $ spring --version Spring CLI v3.2.2
The preceding instructions install a local instance of
spring
called the
dev
instance.
It points at your target build location, so every time you rebuild Spring Boot,
spring
is up-to-date.
You can see it by running the following command:
$ sdk ls springboot ================================================================================ Available Springboot Versions ================================================================================ > + dev * 3.2.2 ================================================================================ + - local version * - installed > - currently in use ================================================================================
3.2.OSX Homebrew Installation
If you are on a Mac and use Homebrew, you can install the Spring Boot CLI by using the following commands:
$ brew tap spring-io/tap $ brew install spring-boot
Homebrew installs
spring
to
/usr/local/bin
.
If you do not see the formula, your installation of brew might be out-of-date. In that case, run |
3.2.MacPorts Installation
If you are on a Mac and use MacPorts, you can install the Spring Boot CLI by using the following command:
$ sudo port install spring-boot-cli
3.2.Command-line Completion
The Spring Boot CLI includes scripts that provide command completion for the BASH and zsh shells.
You can
source
the script (also named
spring
) in any shell or put it in your personal or system-wide bash completion initialization.
On a Debian system, the system-wide scripts are in
/shell-completion/bash
and all scripts in that directory are executed when a new shell starts.
For example, to run the script manually if you have installed by using SDKMAN!, use the following commands:
$ . ~/.sdkman/candidates/springboot/current/shell-completion/bash/spring $ spring
grab help jar run test version
If you install the Spring Boot CLI by using Homebrew or MacPorts, the command-line completion scripts are automatically registered with your shell. |
3.2.Windows Scoop Installation
If you are on a Windows and use Scoop, you can install the Spring Boot CLI by using the following commands:
> scoop bucket add extras > scoop install springboot
Scoop installs
spring
to
~/scoop/apps/springboot/current/bin
.
If you do not see the app manifest, your installation of scoop might be out-of-date. In that case, run |
Good resources
Bên cạnh series này còn có rất nhiều nơi khác viết bài về Spring Boot khá ok. Ví dụ như các trang sau:
- Series “Làm chủ Spring Boot từ Zero đến Hero” của Loda.me: Trước mình làm quen với Spring Boot ở trang này, viết khá dễ hiểu và phù hợp với người mới.
- Laptrinhjavaweb.com: trang này giúp bạn có cái nhìn tổng quan về Java web.
- Stackjava.com: muốn tìm hiểu thêm các khía cạnh khác thì lên trang này đọc nhé.
Thêm các trang tiếng Anh nữa:
- Baedung.com: bạn nào học lâu chắc biết trang này rồi, nhiều bài hay về Spring, bao phủ khá toàn diện. Hầu như vấn đề nào gặp phải đều có bài viết trên đây.
- Vlad Mihalcea: ông này chuyên về xử lý database trong Java, muốn tìm hiểu sâu thì đọc.
Còn vài trang nữa như Dzone,… mà mình không liệt kê hết ở đây.
À quên nữa, nếu các bạn có thắc mắc hoặc có gì đó cần bổ sung vào series thì hãy comment bên dưới nhé. Nó sẽ giúp mình hoàn thiện series cũng như kiến thức nữa.
All rights reserved
Spring là một framework nắm vai trò quan trọng trong phát triển phần mềm, tuy nhiên chúng vẫn chứa đựng những nhược điểm nhất định. Chính vì lý do này, Spring Boot đã ra đời nhằm cải thiện những nhược điểm này và hứa hẹn mang đến nhiều sản phẩm phần mềm hoàn hảo trong tương lai. Vậy Spring Boot là gì mà có thể đem lại nhiều giá trị tuyệt vời đến như vậy? Hãy cùng chúng tôi khám phá chi tiết về thuật ngữ này tại bài viết bên dưới nhé!
Developing Your First Spring Boot Application
This section describes how to develop a small “Hello World!” web application that highlights some of Spring Boot’s key features. You can choose between Maven or Gradle as the build system.
The spring.io website contains many “Getting Started” guides that use Spring Boot. If you need to solve a specific problem, check there first. You can shortcut the steps below by going to start.spring.io and choosing the “Web” starter from the dependencies searcher. Doing so generates a new project structure so that you can start coding right away. Check the start.spring.io user guide for more details. |
4.Prerequisites
Before we begin, open a terminal and run the following commands to ensure that you have a valid version of Java installed:
$ java -version openjdk version "17.0.4.1" 2022-08-12 LTS OpenJDK Runtime Environment (build 17.0.4.1+1-LTS) OpenJDK 64-Bit Server VM (build 17.0.4.1+1-LTS, mixed mode, sharing)
This sample needs to be created in its own directory. Subsequent instructions assume that you have created a suitable directory and that it is your current directory. |
4.1.Maven
If you want to use Maven, ensure that you have Maven installed:
$ mvn -v Apache Maven 3.8.5 (3599d3414f046de2324203b78ddcf9b5e4388aa0) Maven home: usr/Users/developer/tools/maven/3.8.5 Java version: 17.0.4.1, vendor: BellSoft, runtime: /Users/developer/sdkman/candidates/java/17.0.4.1-librca
4.1.Gradle
If you want to use Gradle, ensure that you have Gradle installed:
$ gradle --version ------------------------------------------------------------ Gradle 8.1.1 ------------------------------------------------------------ Build time: 2023-04-21 12:31:26 UTC Revision: 1cf537a851c635c364a4214885f8b9798051175b Kotlin: 1.8.10 Groovy: 3.0.15 Ant: Apache Ant(TM) version 1.10.11 compiled on July 10 2021 JVM: 17.0.7 (BellSoft 17.0.7+7-LTS) OS: Linux 6.2.12-200.fc37.aarch64 aarch64
4.Setting up the project with Maven
We need to start by creating a Maven
pom.xml
file.
The
pom.xml
is the recipe that is used to build your project.
Open your favorite text editor and add the following:
4.0.0
com.example
myproject
0.0.1-SNAPSHOT
org.springframework.boot
spring-boot-starter-parent
3.2.2
The preceding listing should give you a working build.
You can test it by running
mvn package
(for now, you can ignore the “jar will be empty – no content was marked for inclusion!” warning).
At this point, you could import the project into an IDE (most modern Java IDEs include built-in support for Maven). For simplicity, we continue to use a plain text editor for this example. |
4.Setting up the project with Gradle
We need to start by creating a Gradle
build.gradle
file.
The
build.gradle
is the build script that is used to build your project.
Open your favorite text editor and add the following:
plugins { id 'java' id 'org.springframework.boot' version '3.2.2' } apply plugin: 'io.spring.dependency-management' group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' repositories { mavenCentral() } dependencies { }
The preceding listing should give you a working build.
You can test it by running
gradle classes
.
At this point, you could import the project into an IDE (most modern Java IDEs include built-in support for Gradle). For simplicity, we continue to use a plain text editor for this example. |
4.Adding Classpath Dependencies
Spring Boot provides a number of “Starters” that let you add jars to your classpath. “Starters” provide dependencies that you are likely to need when developing a specific type of application.
4.4.Maven
Most Spring Boot applications use the
spring-boot-starter-parent
in the
parent
section of the POM.
The
spring-boot-starter-parent
is a special starter that provides useful Maven defaults.
It also provides a
dependency-management
section so that you can omit
version
tags for “blessed” dependencies.
Since we are developing a web application, we add a
spring-boot-starter-web
dependency.
Before that, we can look at what we currently have by running the following command:
$ mvn dependency:tree [INFO] com.example:myproject:jar:0.0.1-SNAPSHOT
The
mvn dependency:tree
command prints a tree representation of your project dependencies.
You can see that
spring-boot-starter-parent
provides no dependencies by itself.
To add the necessary dependencies, edit your
pom.xml
and add the
spring-boot-starter-web
dependency immediately below the
parent
section:
org.springframework.boot
spring-boot-starter-web
If you run
mvn dependency:tree
again, you see that there are now a number of additional dependencies, including the Tomcat web server and Spring Boot itself.
4.4.Gradle
Most Spring Boot applications use the
org.springframework.boot
Gradle plugin.
This plugin provides useful defaults and Gradle tasks.
The
io.spring.dependency-management
Gradle plugin provides dependency management so that you can omit
version
tags for “blessed” dependencies.
Since we are developing a web application, we add a
spring-boot-starter-web
dependency.
Before that, we can look at what we currently have by running the following command:
$ gradle dependencies > Task :dependencies ------------------------------------------------------------ Root project 'myproject' ------------------------------------------------------------
The
gradle dependencies
command prints a tree representation of your project dependencies.
Right now, the project has no dependencies.
To add the necessary dependencies, edit your
build.gradle
and add the
spring-boot-starter-web
dependency in the
dependencies
section:
dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' }
If you run
gradle dependencies
again, you see that there are now a number of additional dependencies, including the Tomcat web server and Spring Boot itself.
4.Writing the Code
To finish our application, we need to create a single Java file.
By default, Maven and Gradle compile sources from
src/main/java
, so you need to create that directory structure and then add a file named
src/main/java/MyApplication.java
to contain the following code:
package com.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @SpringBootApplication public class MyApplication { @RequestMapping("/") String home() { return "Hello World!"; } public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }
import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController @RestController @SpringBootApplication class MyApplication { @RequestMapping("/") fun home() = "Hello World!" } fun main(args: Array
) { runApplication
(*args) }
Although there is not much code here, quite a lot is going on. We step through the important parts in the next few sections.
4.5.The @RestController and @RequestMapping Annotations
The first annotation on our
MyApplication
class is
@RestController
.
This is known as a stereotype annotation.
It provides hints for people reading the code and for Spring that the class plays a specific role.
In this case, our class is a web
@Controller
, so Spring considers it when handling incoming web requests.
The
@RequestMapping
annotation provides “routing” information.
It tells Spring that any HTTP request with the path should be mapped to the
home
method.
The
@RestController
annotation tells Spring to render the resulting string directly back to the caller.
The |
4.5.The @SpringBootApplication Annotation
The second class-level annotation is
@SpringBootApplication
.
This annotation is known as a meta-annotation, it combines
@SpringBootConfiguration
,
@EnableAutoConfiguration
and
@ComponentScan
.
Of those, the annotation we’re most interested in here is
@EnableAutoConfiguration
.
@EnableAutoConfiguration
tells Spring Boot to “guess” how you want to configure Spring, based on the jar dependencies that you have added.
Since
spring-boot-starter-web
added Tomcat and Spring MVC, the auto-configuration assumes that you are developing a web application and sets up Spring accordingly.
4.5.The “main” Method
The final part of our application is the
main
method.
This is a standard method that follows the Java convention for an application entry point.
Our main method delegates to Spring Boot’s
SpringApplication
class by calling
run
.
SpringApplication
bootstraps our application, starting Spring, which, in turn, starts the auto-configured Tomcat web server.
We need to pass
MyApplication.class
as an argument to the
run
method to tell
SpringApplication
which is the primary Spring component.
The
args
array is also passed through to expose any command-line arguments.
4.Running the Example
4.6.Maven
At this point, your application should work.
Since you used the
spring-boot-starter-parent
POM, you have a useful
run
goal that you can use to start the application.
Type
mvn spring-boot:run
from the root project directory to start the application.
You should see output similar to the following:
$ mvn spring-boot:run . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.2.2) ....... . . . ....... . . . (log output here) ....... . . . ........ Started MyApplication in 0.906 seconds (process running for 6.514)
If you open a web browser to
localhost:8080
, you should see the following output:
Hello World!
To gracefully exit the application, press
ctrl-c
.
4.6.Gradle
At this point, your application should work.
Since you used the
org.springframework.boot
Gradle plugin, you have a useful
bootRun
goal that you can use to start the application.
Type
gradle bootRun
from the root project directory to start the application.
You should see output similar to the following:
$ gradle bootRun . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.2.2) ....... . . . ....... . . . (log output here) ....... . . . ........ Started MyApplication in 0.906 seconds (process running for 6.514)
If you open a web browser to
localhost:8080
, you should see the following output:
Hello World!
To gracefully exit the application, press
ctrl-c
.
4.Creating an Executable Jar
We finish our example by creating a completely self-contained executable jar file that we could run in production. Executable jars (sometimes called “uber jars” or “fat jars”) are archives containing your compiled classes along with all of the jar dependencies that your code needs to run.
4.7.Maven
To create an executable jar, we need to add the
spring-boot-maven-plugin
to our
pom.xml
.
To do so, insert the following lines just below the
dependencies
section:
org.springframework.boot
spring-boot-maven-plugin
The |
Save your
pom.xml
and run
mvn package
from the command line, as follows:
$ mvn package [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building myproject 0.0.1-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] .... .. [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject --- [INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar [INFO] [INFO] --- spring-boot-maven-plugin:3.2.2:repackage (default) @ myproject --- [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------
If you look in the
target
directory, you should see
myproject-0.0.1-SNAPSHOT.jar
.
The file should be around 18 MB in size.
If you want to peek inside, you can use
jar tvf
, as follows:
$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar
You should also see a much smaller file named
myproject-0.0.1-SNAPSHOT.jar.original
in the
target
directory.
This is the original jar file that Maven created before it was repackaged by Spring Boot.
To run that application, use the
java -jar
command, as follows:
$ java -jar target/myproject-0.0.1-SNAPSHOT.jar . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.2.2) ....... . . . ....... . . . (log output here) ....... . . . ........ Started MyApplication in 0.999 seconds (process running for 1.253)
As before, to exit the application, press
ctrl-c
.
4.7.Gradle
To create an executable jar, we need to run
gradle bootJar
from the command line, as follows:
$ gradle bootJar BUILD SUCCESSFUL in 639ms 3 actionable tasks: 3 executed
If you look in the
build/libs
directory, you should see
myproject-0.0.1-SNAPSHOT.jar
.
The file should be around 18 MB in size.
If you want to peek inside, you can use
jar tvf
, as follows:
$ jar tvf build/libs/myproject-0.0.1-SNAPSHOT.jar
To run that application, use the
java -jar
command, as follows:
$ java -jar build/libs/myproject-0.0.1-SNAPSHOT.jar . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.2.2) ....... . . . ....... . . . (log output here) ....... . . . ........ Started MyApplication in 0.999 seconds (process running for 1.253)
As before, to exit the application, press
ctrl-c
.
Giới thiệu Spring Boot
1.Spring Boot là gì?
Spring là một Java framework siêu to và khổng lồ, làm được đủ mọi thứ. Nó được chia thành nhiều module, mỗi module làm một chức năng, ví dụ Spring Core, Web, Data access, AOP,… Spring được xây dựng dựa trên 2 khái niệm nền tảng là Dependency injection và AOP (Aspect Oriented Programming).
Một rắc rối khi dùng Spring là việc cấu hình (config) dự án quá phức tạp. Bạn phải làm đủ thứ việc chỉ để tạo một web HelloWorld:
- Tạo Maven hoặc Gradle project
- Thêm các thư viện cần thiết
- Tạo XML để cấu hình project, cấu hình các bean
- Code và build thành file WAR
- Cấu hình Tomcat server để chạy được file WAR vừa build
Đấy, Spring khá mạnh mẽ nhưng việc cấu hình nghe thôi cũng mệt rồi. Do đó Spring boot ra đời, với các ưu điểm:
- Auto config: tự động cấu hình thay cho bạn, chỉ cần bắt đầu code và chạy là được
- Xây dựng các bean dựa trên annotation thay vì XML
- Server Tomcat được nhúng ngay trong file JAR build ra, chỉ cần chạy ở bất kì đâu java chạy được
So sánh với Spring, thì Spring Boot bạn chỉ cần:
- Dùng Spring Initializr, nhập các info của project, chọn thư viện rồi down code về
- Mở source code ra và bắt đầu code
- Chạy ngay trong IDE, hoặc build thành file JAR để chạy được ngay, không cần cấu hình server
1.Tại sao nên học Spring Boot?
Trước đây mình đã có tìm hiểu về Node.js và chuyển sang Spring Boot. Cảm nhận của mình là khi code Spring Boot chúng ta sẽ tập trung nhiều hơn vào business logic, nghĩa là mục tiêu của code làm được gì.
Với Node.js, do nó quá linh hoạt nên bạn sẽ phải tập trung nhiều vào code hơn, thay vì mục đích của code. Kiểu như bạn phải tìm “best practice”, “cách tốt nhất” để code điều gì đó.
Nhưng với Spring boot thì khác, có nhiều thư viện có sẵn và cấu trúc code cũng thành chuẩn mực rồi, nên bạn không cần quá quan tâm phải viết code thế nào cho tốt nữa, thay vào đó sẽ tập trung vào logic hơn.
Mình thấy nhiều bạn hỏi câu này: “Nên học Spring hay Spring Boot trước?”. Theo mình thì nên học Spring Boot trước.
Mình nghĩ tư tưởng của nhiều bạn vẫn mang nặng kiểu “cái cũ tốt hơn cái mới”, “tìm hiểu từ gốc”,… nhưng thực sự khi bắt đầu nên tìm hiểu cái dễ dàng hơn. Vừa đỡ nản, vừa làm được sản phẩm thực tế, trong khi với Spring bạn vẫn còn đang phải cấu hình quá nhiều và chưa làm được gì ra hồn cả.
9.1 Servlet Containers
Spring Boot supports the following embedded servlet containers:
NameServlet Version
Tomcat 9.0
4.0
Jetty 9.4
3.1
Undertow 2.0
4.0
You can also deploy Spring Boot applications to any Servlet 3.1+ compatible container.
Spring Boot Version
The latest version of Spring Boot is 2.0. It introduces a lot of new features along with some modifications and replacement.
Spring Boot là gì?
Spring Boot là một trong số các module của Spring framework chuyên cung cấp các tính năng RAD (Rapid Application Development) cho phép tạo ra và phát triển các ứng dụng độc lập dựa trên Spring một cách nhanh chóng.
Spring Boot ra đời với mục đích loại bỏ những cấu hình phức tạp của Spring, nó không yêu cầu cấu hình XML và nâng cao năng suất cho các nhà phát triển. Với sự góp mặt của Spring Boot, hệ sinh thái Spring đã trở nên mạnh mẽ, phổ biến và hiệu quả hơn bao giờ hết.
Keywords searched by users: java 8 spring boot
Categories: Phổ biến 25 Java 8 Spring Boot
See more here: kientrucannam.vn
See more: https://kientrucannam.vn/vn/