Pengantar Boot Musim Semi
Spring Boot adalah kerangka kerja yang sangat populer baru -baru ini, kerangka kerja yang lebih baik pada kerangka kerja musim semi. Tujuan dari kerangka kerja ini adalah untuk meningkatkan kecepatan pengembang, mengurangi kesulitan konfigurasi, dll., Yang sangat menyederhanakan proses pengembangan. Untuk instruksi terperinci, silakan merujuk ke dokumentasi resmi. Dalam pekerjaan sehari -hari, ada sangat sedikit peluang untuk membangun lingkungan atau kerangka kerja, dan kebanyakan dari mereka dikembangkan secara asli. Karena itu, ketika Anda diminta untuk membangun kerangka kerja sederhana, berbagai kesulitan akan muncul. Misalnya, ketika saya sedang membangun server, saya menyiapkan demo kecil. Saya pikir itu sangat sederhana, tetapi saya mengalami berbagai masalah. Saya menemukan bahwa blog di internet berbicara tentang beberapa poin dengan cara yang tersebar, dan sulit untuk memiliki proses yang lengkap, termasuk masalah yang mungkin ditemui. Berikut adalah ringkasan terperinci dari proses membangun proyek sederhana untuk referensi di masa mendatang. Pada saat yang sama, blog ini juga merupakan persiapan dasar untuk blog berikutnya Tengine Reverse Proxy Server Construction.
Dua keunggulan boot musim semi:
1. Konsep "Konvensi Prioritas Selama Konfigurasi (COC)" berdasarkan kerangka kerja musim semi dan jalur praktik terbaik.
2. Untuk aplikasi perusahaan sehari-hari, starter boot-boot secara otomatis mengonfigurasi modul ketergantungan, dan "di luar kotak" (starter boot-boot konvensional-karena awalan penamaan terletak di org.springframenwork. Paket boot atau namespace).
Dalam artikel ini, saya akan terus memperkenalkan konfigurasi file konfigurasi springboot kepada teman -teman saya. Cara menggunakan parameter konfigurasi global, jadi mari kita mulai perkenalan kami hari ini.
Kami tahu bahwa Spring Boot mendukung konfigurasi otomatis wadah, dan standarnya adalah Tomcat, tentu saja kami juga dapat memodifikasinya:
1. Pertama, kami mengecualikan Tomcat dalam ketergantungan Spring-Boot-Starter-Web: Kecualikan Starter Tomcat dalam File POM
<dependency> <GroupId> org.springframework.boot </groupid> <ArTifactId> Spring-boot-starter-web </artifactid> <scuplusions> <scuxcusion> <grouptid> org.sprramework.boot </ArtifactId> <ArtiFacTID> <ArtifactId> <contif-Boot-STARTER-T-TOPAT.BOTION </groupid> <ArtiFacTID> <artifactid> <contifactid> <t ArtifactD> Spring-boot-starter-tomcat
2. Tambahkan ke Container Jetty
<dependency> <GroupId> org.springframework.boot </groupid> <ArTifactId> Spring-boot-starter-jetty </artifactid> </dependency>
Dengan cara ini, wadah Springboot kami akan dimodifikasi menjadi wadah dermaga.
Untuk memfasilitasi debugging kami, berikut adalah alat debugging HTTP untuk Anda: Postman
Mari Bicara Tentang File Konfigurasi Global Springboot: Application.Properties
Dalam pengembangan, kita harus menemukan persyaratan seperti itu, yaitu untuk memodifikasi port akses kontainer kita. Karena Springboot memuat wadah secara default, pengaturan port tentu saja dikendalikan melalui file konfigurasi, yang cukup nyaman. Kami hanya perlu menambahkannya di file konfigurasi:
server.port = 6666
Dengan cara ini, port wadah kami akan dimodifikasi menjadi 6666.
Kami juga dapat mengatur alias akses proyek melalui file konfigurasi:
server.context-path =/springboot
Dengan cara ini, kita dapat memulai proyek dan mengakses proyek kita melalui http: // localhost: 6666/springboot1
Di atas hanyalah ujung gunung es konfigurasi file konfigurasi springboot. Misalnya, kami juga dapat mengatur konfigurasi koneksi basis data, mengatur konfigurasi lingkungan pengembangan, menggunakan konfigurasi lingkungan, dan mencapai switching yang mulus di antara keduanya.
Mari kita pelajari tentang penggunaan controller Springboot. Springboot memberi kami tiga anotasi:
Di artikel sebelumnya, kami menggunakan @RestController. Mari kita coba gunakan @controller bersama:
@Controller // @responseBodyPublic kelas permintaantest {/*** Tidak ada batasan pada metode permintaan* @return*/@RequestMapping (value = "/req") string publik req () {return "success"; }}Ketika kami memasukkan http: // localhost: 8080/springboot1/req untuk masuk di browser, kami menemukan 404
{"timestamp": 1515332935215, "status": 404, "error": "tidak ada pesan yang tersedia", "path": "/springboot1/req"}Mengapa ini? Ini karena @Controller harus digunakan dengan templat, jadi kami membuka file Maven Pom dan menambahkan templat springboot:
<!-Template Springboot-> <dependency> <GroupId> org.springframework.boot </groupid> <ArTifactId> Spring-boot-starter-thymeleaf </stifactid> </dependency>
Kemudian temukan template di direktori sumber daya proyek kami (jika tidak, buat yang baru, tetapi pastikan untuk mencatat bahwa nama folder harus konsisten), dan kemudian membuat sukses.html sehingga kami memulai proyek lagi dan mengakses alamatnya sekarang, apakah tidak apa -apa?
Namun, perlu dicatat di sini bahwa pengembangan tingkat perusahaan saat ini dipisahkan dari ujung depan dan belakang. Ketika kami melakukan layanan back-end, kami hanya perlu mengembalikan data yang sesuai. Tentu saja, ada kelemahan lain untuk menggunakan templat, yaitu, kinerja akan menyebabkan kerugian tertentu, sehingga semua orang dapat secara singkat memahaminya di sini.
Seperti yang disebutkan dalam pengantar di atas, @controller+ @responsebody setara dengan @RestController, jadi disarankan agar Anda menggunakan @RestController di sini.
Mari kita perkenalkan @RequestMapping (value = "/req"). Saya yakin semua orang sudah tahu penggunaannya. Tentu saja, anotasi ini tidak hanya dapat digunakan dalam metode, tetapi juga berlaku untuk kelas.
@RestController //@controller //@responsebody@requestMapping (value = "/test") kelas public {/*** Tidak ada batasan pada metode permintaan* @return*/@RequestMapping (value = "/req") string publik req () {return "success"; }/** * Metode Permintaan Terbatas adalah Get * @Return */@RequestMapping (value = "/req1", Method = requestMethod.get) Public String req1 () {return "Success"; }/** * Metode Permintaan Pembatasan adalah posting * @return */@RequestMapping (value = "/req2", Method = requestMethod.post) Public String req2 () {return "Success"; }}Saya percaya bahwa ketika Anda melihat metode ini, Anda harus sudah tahu kegunaannya. Ini adalah jenis akses yang ditentukan, dan dapat diakses dengan cara apa pun tanpa mengatur default. Saya tidak tahu apakah saya berpikir bahwa jika metode diatur di kelas @RequestMapping, metode di kelas akan diwarisi secara default. Tentu saja, Anda juga dapat mengaturnya secara terpisah di metode ini. Silakan coba masalah prioritas sendiri.
Di bawah ini saya akan memperkenalkan kepada Anda cara mengakses konstanta dalam file konfigurasi di controller. Pertama kami menambahkan file konfigurasi:
name = hpugsage = 35content = name: $ {name}; usia: $ {usia}Kami menggunakan konstanta dalam file konfigurasi, yang digunakan oleh $ {}.
Di bawah ini kami menyuntikkan parameter di pengontrol:
// menyuntikkan parameter dalam file konfigurasi @value ("$ {name}") name string pribadi; @Value ("$ {usia}") usia integer pribadi; @Value ("$ {Content}") Private String Content; @RequestMapping (value = "/req3", Method = requestMethod.get) Public String req3 () {return "name =" + name; } @RequestMapping (value = "/req4", method = requestMethod.get) Public String req4 () {return "usia =" + usia; } @RequestMapping (value = "/req5", method = requestMethod.get) Public String req5 () {return "content =" + content; }Mulailah proyek kami dan cobalah untuk mengunjunginya.
Jika Anda merasa tidak puas dengan penggunaan ini, berikut adalah trik lain: kami menggunakan file konfigurasi pemetaan kelas dan menggunakan kelas untuk menggunakan parameter. Ini lebih nyaman daripada menyuntikkan satu parameter. Pertama, buat kelas java
@Component@configurationproperties (prefix = "userInfo") kelas publik userInfo {private string names; usia bilangan bulat pribadi; konten string pribadi; getage integer publik () {usia kembali; } public string getNames () {return names; } public void setNames (nama string) {this.names = nama; } public void setage (usia integer) {this.age = usia; } public String getContent () {return content; } public void setContent (string content) {this.content = content; }}Kemudian atur parameter dalam file konfigurasi kami:
UserInfo.names = Little Broken Child UserInfo.age = 25UserInfo.content = Name: $ {UserInfo.names}; usia: $ {userInfo.age}Pengkabelan untuk membuat pengontrol kami:
// menyuntikkan objek @Autowired private userinfo userInfo; @RequestMapping (value = "/req6", Method = requestMethod.get, menghasilkan = "text/polos; charset = utf-8") string publik req6 () {return "name =" + userInfo.getNames (); } @RequestMapping (value = "/req7", Method = requestMethod.get) Public String req7 () {return "usia =" + userInfo.getage (); } @RequestMapping (value = "/req7", Method = requestMethod.get) Public String req7 () {return "usia =" + userInfo.getage (); } @RequestMapping (value = "/req8", method = requestMethod.get) Public String req8 () {return "content =" + userInfo.getContent (); }Oke, coba mulai ulang kunjungan proyek kami.
Teman, tidakkah Anda tahu jika Anda mengalami masalah ini? Ada kode Cina yang kacau. Pertama -tama, jangan khawatir. Mari kita lihat file konfigurasi springboot lain: application.yml. File konfigurasi ini menggantikan ";" oleh ruang baru. Mari kita lihat bagaimana konfigurasi yang sama dikonfigurasi di bawah YML:
Server: Port: 8888 Konteks-path: /springboot1name: hpugsage: 35content: nama: $ {name}; usia: $ {usia} userInfo: nama: anak kecil usia: 25 konten: nama: $ {userinfo.names}; usia: $ {UserInfo.age}Sekarang mari kita mulai proyek dan coba.
Kembali ke pertanyaan yang kacau di atas, apakah tidak ada kacau saat kita menggunakan YML? Apakah Anda sedikit tertekan? Mengapa ini? Ini karena file .properties menggunakan formulir encoding unicode, sehingga kode yang kacau akan muncul ketika kita memasuki Cina. Tentu saja, ada alasan lain untuk kode kacau, yaitu, pengaturan pengkodean saya bisa tidak konsisten dengan front-end. Kami menambahkan ini ke file konfigurasi:
Spring: HTTP: Encoding: Force: True Charset: UTF-8 Diaktifkan: TRUESERVER: TOMCAT: URI-encoding: UTF-8
untuk mengontrol. Berikut adalah beberapa tips pengembangan. Springboot memberi kami solusi untuk file konfigurasi yang berbeda di lingkungan pengembangan yang berbeda:
#yml Format Spring: Profil: Aktif: Prod#.Properti format spring.profiles.active = dev
Meringkaskan
Di atas adalah tutorial tentang penggunaan file konfigurasi spring-boot-starter-web yang diperkenalkan editor kepada Anda tentang jebakan yang dihadapi dalam pengembangan boot musim semi. Saya harap ini akan membantu semua orang. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas semua orang tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!