Tổng quan về Spring Boot bạn có thể chưa biết!
NỘI DUNG BÀI VIẾT
Gần đây hơn, với sự ra đời của Spring Boot, cấu hình tự động đã vượt qua khả năng quét thành phần và tự động kết nối dây.
- Spring boot là framework như thế nào?
Spring Boot là gì?
Spring Boot là một phần mở rộng của Spring Framework cung cấp một số cải tiến về năng suất. Cải tiến nổi tiếng nhất trong số này là tính năng cấu hình tự động , trong đó Spring Boot có thể đưa ra những hợp lý được mong đợi về những thành phần nào cần được cấu hình và kết nối với nhau, dựa trên các mục trong đường dẫn dẫn lớp, biến môi trường và các yếu tố khác. (Craig Walls, 2018)
Các tính năng
- Các tính năng của Spring Boot
Quản lý thuộc tính phụ
Quản lý các phần phụ thuộc thật dễ dàng với Spring Boot. Khung này đóng gói các gói phụ thuộc cần thiết của bên thứ ba cho từng loại ứng dụng. Sau đó, nó cung cấp cho họ thông tin qua cái gọi là gói khởi động ( spring-boot-starter-web, spring-boot-starter-data-jpa, vv).
Gói khởi động là tập hợp các tiện ích phụ thuộc mô tả mà bạn có thể đưa vào ứng dụng của mình. Chúng tôi cho phép bạn được giải pháp chung cho tất cả các công nghệ liên quan đến Spring. Vì vậy, bạn thậm chí không cần phải tìm kiếm trực tuyến các mã hoặc trình điều khiển và thư viện tương thích.
Ví dụ:
- Nếu bạn muốn bắt đầu sử dụng Spring Data JPA để truy cập cơ sở dữ liệu của mình, bạn chỉ cần đưa phần phụ thuộc spring-boot-starter-data-jpa vào dự án của mình. Thế là xong, bạn đã hoàn thành.
- Nếu bạn muốn tạo một ứng dụng web, chỉ cần thêm phần phụ thuộc spring-boot-starter-web . Nó sẽ cung cấp tất cả các thư viện bạn cần để phát triển ứng dụng MVC vào dự án của bạn, chẳng hạn như spring-webmvc , jackson-json , validation-api và Tomcat .
Về cơ bản, nó thu thập tất cả các phần phụ thuộc phổ biến và định nghĩa của chúng ở một nơi. Kết quả là file pom.xml sẽ chứa ít dòng hơn rất nhiều khi sử dụng trong Spring Boot so với Spring thông thường.
Cấu hình tự động
Một tính năng đáng chú ý khác của công nghệ là cấu hình tự động. Sau khi chọn gói khởi động phù hợp, phần mềm sẽ cố gắng tự động định cấu hình ứng dụng của bạn dựa trên các phần phụ thuộc mà bạn đã thêm.
Ví dụ:
- Nếu bạn thêm Spring-boot-starter-web , hệ thống sẽ tự động định cấu hình các Bean đã đăng ký như DispatcherServlet , ResourceHandlers và MessageSource .
- Nếu bạn đang sử dụng spring-boot-starter-jdbc , nó sẽ tự động đăng ký các hạt DataSource , EntityManagerFactory và TransactionManager . Nó cũng tự động đọc cơ sở dữ liệu kết nối thông tin từ tệp application.properties .
Nhưng giả sử bạn sẽ không sử dụng cơ sở dữ liệu. Giả sử bạn không cung cấp bất kỳ chi tiết nào về kết nối theo cách thủ công. Trong trường hợp đó, khung sẽ tự động định cấu hình cơ sở dữ liệu trong bộ nhớ mà không cần bất kỳ cấu hình bổ sung nào từ phía bạn (nếu bạn có thư viện H2 hoặc HSQL).
Và bạn không bị buộc phải nén theo nó. Cấu hình tự động có thể được ghi đè hoàn toàn vào bất kỳ lúc nào theo sở thích của người dùng.
Hợp nhất Web máy chủ
Mọi ứng dụng Spring Boot đều bao gồm một web nhúng máy chủ. Điều này có nghĩa là bạn không còn phải lo lắng về việc thiết lập một thùng chứa servlet nữa. Thay vào đó, ứng dụng có thể tự chạy dưới dạng tệp .jar bằng cách sử dụng hợp nhất máy chủ. Và nếu bạn cần sử dụng một HTTP máy chủ đặc biệt, chỉ cần loại trừ mặc định các phần phụ thuộc mặc định. Khung này cung cấp các gói khởi động khác nhau cho các máy chủ HTTP khác nhau.
Dịch vụ vi mô được thực hiện dễ dàng
Bạn có thể đóng gói ứng dụng thành một tệp . jar có toàn bộ vùng chứa Tomcat được nhúng. Tính năng này được vay từ mô hình phát triển khai ứng dụng của Play framework (tuy nhiên, Spring Boot cũng có thể tạo các tệp .war truyền thống ). Về cơ bản, bạn có thể nhanh chóng đóng gói toàn bộ dịch vụ (ví dụ: người dùng xác thực) thành một sản phẩm độc lập và có thể phát triển khai đầy đủ bằng API. Điều này giúp việc cài đặt và phát triển phần mềm trở nên dễ dàng hơn nhiều.
Kiểm tra hợp lý
Bạn có thể tăng tốc quá trình QA bằng cách sử dụng cài đặt mặc định trực tuyến cho các đơn vị kiểm tra và tích hợp. Việc kiểm tra đặc biệt dịch vụ một cách dễ dàng với sự trợ giúp của kiểm tra khung JUnit và chú thích @Test . Để chỉ kiểm tra một số phần chức năng được định nghĩa tốt nhất, nhà phát triển có thể sử dụng chú thích @SpringBootTest sau đó là danh sách các thành phần cần kiểm tra.
Các tính năng mới trong Spring Boot 3.0
Spring Boot 3.0 là phiên bản mới nhất của phần mềm này, được phát hành vào tháng 11 năm 2022. Nó giới thiệu một số tính năng mới đáng được đề cập đặc biệt.
Hỗ trợ cơ sở Java 17 và Java 19
Spring Boot 3.0 yêu cầu ít nhất phiên bản JDK thứ 17 để hoạt động và nó không tương thích với JDK 8 hoặc phiên bản 11. Vì vậy, nếu bạn đang nghĩ đến việc nâng cấp lên 3.0, hãy đảm bảo cập nhật cả phiên bản JDK của lệnh cấm. Phần mềm này cũng tương thích với JDK 19.
Hình ảnh gốc GraalVM
3.0 được hỗ trợ bằng hình ảnh gốc. Điều này cho phép bạn chuyển đổi ứng dụng của mình thành hình ảnh gốc GraalVM. Nói cách khác, tính năng này cho phép các nhà phát triển tạo các tệp thực thi gốc thông tin biên dịch tĩnh trước thời gian (AOT) bằng trình biên dịch Hình ảnh gốc GraalVM. Điều này cải thiện đáng kể thời gian khởi động ứng dụng và thiết bị thụ lý trí tuệ.
Nhà vô địch Java Josh Long nói: “…Java không phải là ngôn ngữ sử dụng hiệu quả bộ nhớ tốt nhất. Điều này đã tước đi một số cơ hội như IoT và serverless. Quá trình biên dịch AOT với GraalVM Native Image giúp nó hoạt động trong khi vẫn duy trì khả năng mở rộng và đáng khen ngợi của Java.”
@ConstructorBinding dễ dàng hơn
Bạn không cần sử dụng chú thích @ConstructorBinding nữa nếu lớp @ConfigurationProperties có một hàm tạo được tham số hóa duy nhất. Dù vậy, nếu có nhiều hàm tạo trong lớp, bạn vẫn cần sử dụng @ConstructorBinding để chỉ định Spring Boot nào nên sử dụng.
Tiện ích mở rộng Log4j2
3.0 đi kèm với một số tiện ích mở rộng mới cho Log4j2, bao gồm:
- Cấu hình dành riêng cho hồ sơ
- Hệ thống thuộc tính Log4j2
- Tra cứu môi trường thuộc tính
Tất cả những điều này đã cải thiện khả năng hoạt động của Log4j2, giúp các nhà phát triển có nhiều cơ hội hơn trong việc xác định cấu hình chính xác.
Spring Framework 6.0 và Jakarta EE 9
Spring Boot 3.0 được xây dựng trên Spring Framework 6.0 và Jakarta EE 9. Cái sau rất quan trọng vì bạn sẽ phải sử dụng các gói jakarta.* thay vì các gói javax.* . Vì vậy, nếu ứng dụng của bạn sử dụng các loại Jakarta EE như chú thích, xác thực hoặc JPA, bạn phải thay thế tất cả chúng bằng gói jakarta.* Tương thích.
Khả năng quan sát Spring
Khả năng quan sát Spring là một phần của bộ tính năng Spring Framework 6.0. Chức năng này dựa trên Truy tìm micromet và Micromet. Nó cho phép bạn ghi lại nhiều phần mềm khác nhau và cung cấp hỗ trợ theo dõi bằng OpenZipkin và OpenTelemetry.
Khấu hao
Tuy nhiên, phiên bản 3.0 cũng có một số lỗi không thể sử dụng được nữa. Cụ thể là:
- Cookie nhận dạng thuộc tính không được hỗ trợ .
- Không còn sử dụng chức năng tạo cơ sở trên chức năng quét JsonMixinModule .
- Không sử dụng lại các hàm tạo không có đối số trên cơ sở dữ liệu HealthContributor @Configuration của lớp cơ sở dữ liệu .
Bạn có thể tìm thêm thông tin trong ghi chú chính thức phát hành Spring Boot 3.0 .
Ưu điểm
Cấu hình tự động Spring Boot đã giảm đáng kể rõ ràng về số lượng cấu hình (dù bằng XML hoặc Java) cần thiết để xây dựng một ứng dụng. Nó tăng cường sự phát triển của Spring đến khả năng có thể tưởng tượng việc phát triển các ứng dụng Spring mà không có nó.
Nhưng ngoài các phụ thuộc ban đầu và cấu hình tự động, Spring Boot còn cung cấp một số tính năng hữu ích khác:
- Thiết bị truyền động cung cấp thông tin chi tiết về thời gian chạy bên trong ứng dụng, bao gồm dữ liệu, luồng đầu ra thông tin, trạng thái ứng dụng và các môi trường thuộc tính có sẵn cho ứng dụng.
- Đặc điểm kỹ thuật hoạt động của các môi trường thuộc tính.
- Thử nghiệm hỗ trợ bổ sung được hỗ trợ bên ngoài thử nghiệm hỗ trợ có trong cốt lõi khung.
Hơn nữa, Spring Boot còn cung cấp một trình cài đặt mô hình thay thế dựa trên các lệnh Groovy được gọi là Spring Boot CLI (lệnh giao diện dòng). Với Spring Boot CLI, bạn có thể viết toàn bộ ứng dụng dưới dạng Groovy tập lệnh và chạy chúng theo lệnh dòng. Chúng tôi sẽ không dành nhiều thời gian cho Spring Boot CLI, nhưng mời chúng ta sẽ chạm vào nó khi nó phù hợp với nhu cầu của chúng ta.
Spring Boot đã trở thành một phần không thể thiếu trong quá trình phát triển Spring; Tôi không thể tưởng tượng việc phát triển một ứng dụng Spring mà không có nó.
Nhược điểm
Spring Boot tuy có rất nhiều ưu điểm nhưng nó vẫn còn một số nhược điểm mà bạn cần lưu ý:
- Missing control. Hệ thống tạo ra nhiều phần phụ thuộc không được sử dụng để phát triển tệp khai báo có dung lượng lớn;
- Khó chuyển đổi. Quá trình chuyển đổi một dự án cũ của Spring hoặc hiện đã có ứng dụng Spring Boot có thể phức tạp và tốn kém trong thời gian;
- Không phù hợp cho các dự án lớn hơn. Nhiều nhà phát triển cho rằng công cụ này không phù hợp để xây dựng khối tài nguyên ứng dụng lớn. Mặc dù nhiều người cho rằng nó có thể xử lý tốt các dự án lớn, nhưng nó vẫn chưa đạt được sự đồng thuận chung;
- Unable to active. Spring Boot sử dụng cách tiếp cận tính năng chủ. Điều này có nghĩa là nó hướng tới một giải pháp duy nhất cho bất kỳ vấn đề nào. Nó làm giảm công việc quyết định trong quá trình mã hóa nhưng cũng làm cho nó hoạt động kém hiệu quả hơn so với khung gốc.
Khi nào nên sử dụng Spring Boot?
Spring Boot là giải pháp tối ưu để xây dựng các microservice có thể mở rộng. Nhưng nó cũng có thể được sử dụng để phát triển nhiều ứng dụng khác:
- Dịch vụ vi mô;
- Tiện ích;
- Ứng dụng web MVC;
- Ứng dụng web phản hồi;
- Ứng dụng không có máy chủ;
- Ứng dụng không đồng bộ;
- Di động hỗ trợ;
- Và hơn thế nữa.
Nhìn chung, khung này giúp bạn dễ dàng tạo ra các loại ứng dụng khác nhau với nỗ lực tối thiểu. Chúng ta hãy xem xét kỹ kỹ hơn về các tính năng độc lập của nó.
Trả lời