JPrime 2024 berakhir dengan jayanya!!
Penganjur JPrime 2024 sekali lagi berusaha keras untuk menawarkan pelbagai topik, memastikan ada sesuatu untuk semua orang.
Walau bagaimanapun, artikel hari ini tidak dicetuskan oleh salah satu syarahan Michael Simons tentang "Evolusi Pengujian Integrasi dalam Musim Bunga dan Quarkus" walaupun ia sangat bernas. Dia meneroka strategi ujian integrasi, memfokuskan pada persediaan dalam Spring Boot.
Pengarang dengan jelas menekankan bahawa isu yang diketengahkan beliau ditangani dengan berkesan dalam Quarkus melalui penggunaan Perkhidmatan Dev (Rajah 1). Ini menyerlahkan satu lagi sebab mengapa saya melihat Spring Boot dengan keraguan untuk aplikasi tertentu- kerumitannya sangat berbeza dengan penyelesaian yang diperkemas dalam Quarkus, terutamanya dengan penggunaan Perkhidmatan Dev.
Rajah 1 – JPrime 2024
Sungguh mengagumkan menyaksikan perkhidmatan Dev yang terpesona dalam kalangan peserta baharu. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa Perkhidmatan Dev bukanlah ciri terbaru dalam Quarkus; ia telah menjadi sebahagian daripada rangka kerja untuk sekian lama. Mari kita mendalami Quarkus Dev Services dan terokai faedah kekalnya.
Di Quarkus, Dev Services memudahkan peruntukan automatik perkhidmatan yang tidak dikonfigurasikan dalam kedua-dua mod pembangunan dan ujian. Pada asasnya, jika anda memasukkan sambungan tanpa mengkonfigurasinya, Quarkus akan memulakan perkhidmatan yang berkaitan secara automatik—selalunya menggunakan Testcontainers di latar belakang—dan mengkonfigurasi aplikasi anda untuk menggunakan perkhidmatan ini dengan cekap.
Pengesanan dan Pelancaran Perkhidmatan Automatik
Quarkus Dev Services mengautomasikan pengesanan dan pelancaran perkhidmatan yang diperlukan seperti pangkalan data, broker mesej dan perkhidmatan backend lain. Fungsi ini menggunakan kebergantungan aplikasi yang dinyatakan dalam pom.xml atau build.gradle. Sebagai contoh, menambah pemacu pangkalan data secara automatik mencetuskan Dev Services untuk memutarkan contoh kontena yang sepadan bagi pangkalan data itu jika ia belum berjalan. Teknologi yang digunakan di sini terutamanya melibatkan Testcontainers, yang membolehkan penciptaan contoh pangkalan data biasa yang ringan dan mudah dibuang, penyemak imbas web Selenium atau apa sahaja yang boleh dijalankan dalam bekas Docker.
Suntikan Konfigurasi Dinamik
Setelah perkhidmatan yang diperlukan disegerakan, Quarkus Dev Services secara dinamik menyuntik butiran sambungan perkhidmatan yang berkaitan ke dalam konfigurasi aplikasi semasa masa jalan. Ini dilakukan tanpa sebarang campur tangan manual, menggunakan ciri yang dikenali sebagai Ujian Berterusan yang menghalakan semula pangkalan data standard, atau URL perkhidmatan lain, ke Testcontainers yang diperuntukkan secara automatik. Sifat konfigurasi seperti URL, bukti kelayakan pengguna dan parameter operasi lain ditetapkan dengan lancar, membenarkan aplikasi berinteraksi dengan perkhidmatan ini seolah-olah ia dikonfigurasikan secara manual.
Gelagat Khusus Perkhidmatan
Perkhidmatan Dev disesuaikan untuk pelbagai jenis perkhidmatan:
Pengendalian Rangkaian dan Pengasingan Perkhidmatan
Setiap perkhidmatan yang diputar oleh Quarkus Dev Services berjalan dalam persekitaran terpencilnya. Ini penting untuk memastikan tiada konflik port, sisa data atau isu keselamatan antara ujian pembangunan yang berbeza. Walaupun pengasingan ini, perkhidmatan dirangkaikan dengan sewajarnya menggunakan Docker, memastikan mereka boleh berkomunikasi antara satu sama lain mengikut keperluan, meniru suasana penggunaan dunia sebenar.
Pengurusan Kitaran Hayat
Quarkus menguruskan kitaran hayat lengkap perkhidmatan yang diperuntukkan secara dinamik ini. Apabila anda memulakan aplikasi anda dalam mod pembangunan, perkhidmatan yang diperlukan dimulakan secara automatik. Apabila anda menghentikan aplikasi Quarkus, perkhidmatan ini juga akan ditamatkan. Pengurusan ini termasuk pengendalian ketekalan data seperti yang diperlukan, membenarkan pembangun menyambung terus dari tempat mereka berhenti tanpa sebarang kelewatan persediaan.
Pertimbangkan anda menggunakan pangkalan data PostgreSQL dengan Quarkus. Jika tiada konfigurasi PostgreSQL sedia ada dikesan, Quarkus akan memulakan bekas PostgreSQL Docker dan menyambungkan aplikasi anda secara automatik.
Perkhidmatan ini didayakan secara lalai dalam mod pembangunan dan ujian tetapi boleh dilumpuhkan jika perlu melalui aplikasi.properties:
quarkus.datasource.devservices.enabled=false
Mari kita kembangkan senario di mana Quarkus menggunakan pangkalan data PostgreSQL dan cara Perkhidmatan Dev memudahkan perkara ini dengan kekecohan yang minimum.
Jika Quarkus mengesan bahawa tiada konfigurasi PostgreSQL aktif (tidak berjalan atau tidak dikonfigurasikan secara eksplisit), ia akan secara automatik memulakan bekas PostgreSQL menggunakan Docker. Ini disediakan di belakang tabir melalui Perkhidmatan Dev.
Untuk berinteraksi dengan pangkalan data melalui lapisan ORM, pertimbangkan untuk menggunakan Quarkus Panache, yang memudahkan operasi ORM Hibernate. Begini cara untuk menyediakan persekitaran anda:
Tambah Kebergantungan
Pertama sekali, masukkan kebergantungan yang diperlukan dalam pom.xml anda:
<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-hibernate-orm-panache</artifactId> </dependency> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-jdbc-postgresql</artifactId> </dependency>
Tentukan Entiti
Seterusnya, tentukan entiti anda, seperti CityEntity:
@Entity @Table(name = "cities") public class CityEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @Column(name = "public_id") private String publicId; @OneToOne private StateEntity state; @Column(nullable = false, name = "created_at") private Instant createdAt; @Column(nullable = false, name = "last_modified") private Instant lastModified; @PrePersist protected void onCreate() { createdAt = Instant.now(); lastModified = createdAt; } @PreUpdate protected void onUpdate() { lastModified = Instant.now(); } }
Buat Repositori
Laksanakan repositori yang akan berinteraksi secara langsung dengan pangkalan data ke:
@ApplicationScoped public class CityRepository implements PanacheRepository<CityEntity> { }
Lapisan Perkhidmatan
Tentukan lapisan perkhidmatan yang menggunakan repositori:
@ApplicationScoped public class CityServiceImpl implements CityService { @Inject CityRepository cityRepository; @Override public long countCities() { return cityRepository.count(); } } public interface CityService { long countCities(); }
Titik Akhir Sumber
@Path("/cities") @Tag(name = "City Resource", description = "City APIs") public class CityResource { @Inject CityService cityService; @GET @Path("/count") @Operation(summary = "Get the total number of cities", description = "Returns the total count of cities in the system.") @APIResponse(responseCode = "200", description = "Successful response", content = @Content(mediaType = "application/json", schema = @Schema(implementation = Long.class))) public long count() { return cityService.countCities(); } }
Apabila anda menjalankan aplikasi Quarkus anda (mvn quarkus:dev), perhatikan permulaan automatik bekas PostgreSQL (Rajah 2). Penyepaduan yang lancar ini menunjukkan kuasa Quarkus Dev Services, menjadikan pembangunan dan ujian menjadi lebih mudah dengan mengautomasikan konfigurasi dan persediaan sambungan kepada perkhidmatan luaran yang diperlukan untuk aplikasi anda.
Rajah 2 – Log aplikasi
Perkhidmatan Quarkus Dev menyelaraskan fasa pembangunan dan ujian dengan mengendalikan konfigurasi dan pengurusan pelbagai perkhidmatan, membolehkan pembangun menumpukan lebih pada aplikasi sebenar. Quarkus menyokong pelbagai Perkhidmatan Dev, termasuk:
Perkhidmatan Quarkus Dev mewakili anjakan paradigma dalam cara pembangun mendekati penyediaan dan penyepaduan perkhidmatan luaran semasa fasa pembangunan dan ujian. Automasi persediaan persekitaran bukan sahaja mempercepatkan proses pembangunan tetapi juga mengurangkan potensi ralat konfigurasi, menjadikannya lebih mudah untuk pasukan menumpukan pada mencipta aplikasi yang teguh dan kaya dengan ciri.
Salah satu kelebihan menonjol Quarkus Dev Services ialah penekanan pada produktiviti pembangun. Dengan mengalih keluar keperluan untuk mengurus kebergantungan perkhidmatan secara manual, pembangun boleh segera memulakan kerja pada logik perniagaan dan ciri aplikasi. Aliran kerja yang diperkemas ini amat berfaedah dalam seni bina perkhidmatan mikro yang berbilang perkhidmatan mungkin memerlukan pembangunan dan penyepaduan serentak
Kesimpulannya, menerima Quarkus Dev Services boleh memberi kesan ketara kepada keberkesanan dan hasil projek pasukan pembangunan anda. Kesederhanaan dan kuasa Quarkus menggalakkan percubaan,
lelaran yang lebih cepat, dan akhirnya kitaran pembangunan yang lebih pantas. Leverage teknologi seperti ini adalah perkara yang diperlukan oleh perniagaan moden untuk berkembang maju dalam era digital.
Atas ialah kandungan terperinci Memanfaatkan Persediaan dan Penyepaduan Automatik dengan Perkhidmatan Quarkus Dev untuk Pembangunan Cekap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!