Karena konfigurasi dependensi yang rumit, mengkonfigurasi Spring untuk aplikasi perusahaan telah menjadi tugas yang sangat membosankan dan rawan kesalahan. Ini terutama berlaku untuk aplikasi yang juga menggunakan beberapa perpustakaan pihak ketiga.
Setiap kali Anda membuat aplikasi Java berbasis perusahaan lain, Anda perlu mengulangi langkah-langkah rutin yang sama untuk mengkonfigurasinya:
- Bergantung pada jenis aplikasi yang dibuat (Spring MVC, Spring JDBC, Spring ORM, dll.), Impor modul Spring yang diperlukan
- Impor pustaka wadah web (untuk aplikasi web)
- Impor perpustakaan pihak ketiga yang diperlukan (misalnya, Hibernate, Jackson), sementara Anda harus mencari versi yang kompatibel dengan versi Spring yang ditentukan.
- Konfigurasikan komponen DAO, seperti: sumber data, manajemen transaksi, dll.
- Konfigurasikan komponen lapisan web, seperti: manajer sumber daya, lihat penyelesai
- Tentukan kelas yang akan memuat semua konfigurasi yang diperlukan.
1. Memperkenalkan Spring Boot
Penulis Spring memutuskan untuk menyediakan pengembang dengan beberapa utilitas yang mengotomatiskan proses konfigurasi dan mempercepat proses membuat dan menggunakan aplikasi Spring, secara kolektif disebut Spring Boot.
Spring Boot adalah proyek yang bermanfaat yang tujuannya adalah untuk menyederhanakan pembuatan aplikasi berdasarkan Spring. Ini memungkinkan Anda untuk membuat aplikasi web dengan cara paling sederhana, membutuhkan upaya minimal dari pengembang untuk mengonfigurasi dan menulis kode.
2. Fitur Spring Boot
Spring Boot memiliki fungsionalitas yang hebat, tetapi fitur-fiturnya yang paling signifikan adalah: manajemen ketergantungan, konfigurasi otomatis, dan wadah servlet bawaan
2.1. Manajemen ketergantungan yang mudah
Untuk mempercepat proses manajemen dependensi, Spring Boot secara implisit mengemas dependensi pihak ketiga yang diperlukan untuk setiap jenis aplikasi berbasis Spring dan menyediakannya kepada pengembang melalui paket starter (spring-boot-starter-web, spring-boot-starter-data-jpa, dll.) .d.)
Paket pemula adalah sekumpulan deskriptor ketergantungan yang mudah digunakan yang dapat Anda sertakan dalam aplikasi Anda. Ini akan memberikan solusi universal untuk semua teknologi yang terkait dengan Pegas, menyelamatkan programmer dari pencarian contoh kode yang tidak perlu dan memuat deskriptor dependensi yang diperlukan dari mereka (contoh deskriptor dan paket starter tersebut akan ditampilkan di bawah)
Misalnya, jika Anda ingin mulai menggunakan Spring Data JPA untuk mengakses database, cukup sertakan dependensi spring-boot-starter-data-jpa di proyek Anda dan Anda selesai (Anda tidak perlu mencari driver database yang kompatibel dan perpustakaan Hibernate)
Jika Anda ingin membuat aplikasi web Spring, tambahkan saja dependensi spring-boot-starter-web , yang menarik ke dalam proyek semua perpustakaan yang diperlukan untuk mengembangkan aplikasi Spring MVC, seperti spring-webmvc , jackson-json , validation-api dan Tomcat
Dengan kata lain, Spring Boot mengumpulkan semua dependensi umum dan mendefinisikannya di satu tempat, yang memungkinkan pengembang untuk menggunakannya, alih-alih menciptakan kembali roda setiap kali mereka membuat aplikasi baru
Oleh karena itu, ketika menggunakan Spring Boot , file pom.xml berisi baris yang jauh lebih sedikit daripada saat menggunakannya dalam aplikasi Spring
Lihat dokumentasi untuk semua paket pemula Boot Musim Semi.
2.2. Konfigurasi otomatis
Fitur Spring Boot kedua yang sangat baik adalah konfigurasi aplikasi otomatis
Setelah memilih paket starter yang sesuai, Spring Boot akan mencoba mengkonfigurasi aplikasi Spring secara otomatis berdasarkan pada dependensi toples yang Anda tambahkan
Misalnya, jika Anda menambahkan Spring-boot-starter-web , Spring Boot akan secara otomatis mengonfigurasi kacang terdaftar seperti DispatcherServlet , ResourceHandlers , MessageSource
Jika Anda menggunakan spring-boot-starter-jdbc , Spring Boot secara otomatis mendaftarkan dataSource , EntityManagerFactory , kacang TransactionManager dan membaca informasi untuk menghubungkan ke database dari file application.properties
Jika Anda tidak akan menggunakan database, dan tidak memberikan rincian tentang koneksi dalam mode manual, Spring Boot akan secara otomatis mengkonfigurasi database dalam memori, tanpa konfigurasi tambahan pada bagian Anda (jika ada perpustakaan H2 atau HSQL)
Konfigurasi otomatis dapat sepenuhnya didefinisikan ulang kapan saja dengan pengaturan pengguna
2.3. Dukungan asli untuk server aplikasi - wadah servlet
Setiap aplikasi web Boot Spring mencakup server web tertanam. Lihatlah daftar kontainer servlet yang didukung di luar kotak.
Pengembang tidak lagi harus khawatir tentang mengkonfigurasi wadah servlet dan menempatkan aplikasi di dalamnya. Sekarang aplikasi dapat memulai dengan sendirinya, sebagai file jar yang dapat dieksekusi menggunakan server bawaan
Jika Anda perlu menggunakan server HTTP terpisah, cukup kecualikan dependensi default untuk ini. Spring Boot menyediakan paket starter terpisah untuk server HTTP yang berbeda
Membuat aplikasi web yang berdiri sendiri dengan server tertanam tidak hanya nyaman untuk pengembangan, tetapi juga solusi yang dapat diterima untuk aplikasi tingkat perusahaan dan menjadi semakin berguna dalam dunia layanan mikro. Kemampuan untuk mengemas seluruh layanan dengan cepat (seperti otentikasi pengguna) dalam artefak yang berdiri sendiri dan dapat digunakan sepenuhnya yang juga menyediakan API membuat instalasi dan penyebaran aplikasi lebih mudah
3. Persyaratan Instalasi Spring Boot
Untuk mengkonfigurasi dan menjalankan aplikasi Boot Musim Semi, yang berikut ini diperlukan:
4. Membuat Aplikasi Spring Boot
Sekarang mari kita berlatih dan mengimplementasikan REST API yang sangat sederhana untuk menerima pembayaran menggunakan kemampuan Spring Boot
4.1. Membuat proyek web menggunakan Maven
Buat proyek Maven dalam IDE yang Anda gunakan, menyebutnya SpringBootRestService
Pastikan untuk menggunakan versi Java 8+ karena Spring Boot tidak berfungsi dengan versi sebelumnya
4.2. Konfigurasi Pom.xml
Langkah kedua adalah mengkonfigurasi Spring Boot di file pom.xml
Semua aplikasi Spring Boot dikonfigurasikan dari spring-boot-starter-parent , jadi sebelum mendefinisikan dependensi lebih lanjut, tambahkan starter-parent sebagai berikut:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.1.RELEASE</version> </parent>
Karena Karena kita membuat API REST, maka perlu untuk menggunakan pegas-boot-starter-web sebagai dependensi, yang secara implisit mendefinisikan semua dependensi lainnya, seperti pegas-inti , pegas-web , pegas-webmvc , servlet api , dan perpustakaan jackson-databind , oleh karena itu cukup tambahkan berikut ini ke pom.xml:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
Sekarang pustaka jar berikut secara otomatis diimpor ke proyek Anda:

Langkah selanjutnya adalah menambahkan plugin Spring Boot:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
Langkah terakhir adalah membuat Maven menghasilkan file jar yang dapat dieksekusi selama perakitan:
<packaging>jar</packaging>
Di bawah ini adalah file pom.xml lengkap:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>springboot.topjava.ru</groupId> <artifactId>SpringBootRestService</artifactId> <version>1.0</version> <packaging>jar</packaging> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.1.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
Seperti yang Anda lihat, menggunakan satu ketergantungan, kita dapat membuat aplikasi web yang berfungsi penuh
4.3. Membuat Sumber Daya REST
Sekarang kita akan membuat pengontrol pembayaran bersama dengan kelas POJO untuk permintaan dan tanggapan
Mari tulis kelas permintaan pembayaran:
package springboot.topjava.ru; public class PaymentRequest { private int userId; private String itemId; private double discount; public String getItemId() { return itemId; } public void setItemId(String itemId) { this.itemId = itemId; } public double getDiscount() { return discount; } public void setDiscount(double discount) { this.discount = discount; } public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } }
Dan juga kelas yang memproses respons dasar yang dikembalikan oleh layanan kami:
package springboot.topjava.ru; public class BaseResponse { private final String status; private final Integer code; public BaseResponse(String status, Integer code) { this.status = status; this.code = code; } public String getStatus() { return status; } public Integer getCode() { return code; } }
Sekarang buat pengontrol:
package springboot.topjava.ru; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/payment") public class PaymentController { private final String sharedKey = "SHARED_KEY"; private static final String SUCCESS_STATUS = "success"; private static final String ERROR_STATUS = "error"; private static final int CODE_SUCCESS = 100; private static final int AUTH_FAILURE = 102; @GetMapping public BaseResponse showStatus() { return new BaseResponse(SUCCESS_STATUS, 1); } @PostMapping("/pay") public BaseResponse pay(@RequestParam(value = "key") String key, @RequestBody PaymentRequest request) { final BaseResponse response; if (sharedKey.equalsIgnoreCase(key)) { int userId = request.getUserId(); String itemId = request.getItemId(); double discount = request.getDiscount();
4.4. Membuat kelas aplikasi utama
Langkah terakhir ini adalah membuat kelas konfigurasi dan meluncurkan aplikasi. Spring Boot mendukung anotasi @SpringBootApplication baru, yang setara dengan menggunakan @Configuration , @EnableAutoConfiguration dan @ComponentScan dengan atribut default mereka
Jadi Anda hanya perlu membuat kelas yang dijelaskan dengan @SpringBootApplication , dan Spring Boot akan mengaktifkan konfigurasi otomatis dan akan memindai sumber daya Anda dalam paket saat ini:
package springboot.topjava.ru; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
5. Menyebarkan Aplikasi Spring Boot
Sekarang mari kita manfaatkan fitur hebat ketiga dari Spring Boot - ini adalah server yang tertanam. Yang perlu kita lakukan adalah membuat file jar yang dapat dieksekusi menggunakan Maven dan menjalankannya seperti aplikasi mandiri yang normal:
- Masuk ke mode baris perintah (perintah cmd), buka folder dengan pom.xml dan masukkan perintah paket mvn clean
- Maven akan menghasilkan file jar yang dapat dijalankan yang disebut SpringBootRestService-1.0.jar
- Buka folder target cd
- Kemudian jalankan file jar: java -jar SpringBootRestService-1.0.jar
- Buka browser di http: // localhost: 8080 / pembayaran
API REST kami berjalan dan siap melayani permintaan melalui port 8080 (secara default)
Pada artikel ini, kami melihat kemampuan Spring Boot dan membuat contoh yang berfungsi penuh menggunakan server bawaan.
Sumber:
https://dzone.com/articles/introducing-spring-boot
- Spring-boot-starter-parent mengubah versi dari 1.5.8.RELEASE ke 2.1.1.RELEASE dan sesuai daftar perpustakaan yang ditarik Maven diperbarui
- Deklarasi repositori Spring yang dihapus, dependensi ditarik dari repositori pusat
- Di kelas BaseResponse, bidang dibuat final, menambahkan konstruktor, dan menghapus setter
- Di PaymentController, kami memperkenalkan metode showStatus () dengan @GetMapping untuk menguji aplikasi di browser
- @RequestMapping yang diganti dalam metode dengan @ GetMapping / @ PostMapping
- Perubahan juga dilakukan untuk menggunakan aplikasi dari baris perintah
PEMBARUAN:
Seperti yang dicatat Lure_of_Chaos , sekarang semuanya dapat dilakukan secara otomatis melalui SPRING INITIALIZR . Dan tanpa meninggalkan JetBrains IntelliJ IDEA favorit Anda .