Pengembang yang tidak memahami properti di musim semi mungkin merasa agak membingungkan, terutama karena ada banyak metode konfigurasi dan banyak metode penggunaan.
Artikel ini bukan analisis prinsip atau artikel analisis kode sumber, tetapi saya harap ini dapat membantu pembaca lebih memahami dan menggunakan Properti Spring.
Penggunaan properti
Semua pembaca artikel ini telah menggunakan Spring. Pertama -tama mari kita lihat bagaimana properti digunakan. Ada beberapa metode yang umum digunakan di musim semi:
1. Gunakan di file konfigurasi XML
Artinya, nilai dalam $ {} diganti secara otomatis.
<bean id = "xxx"> <name properti = "url" value = "$ {javadoop.jdbc.url}" /> </ bean>2. Gunakan melalui injeksi @Value
@Value ("$ {javadoop.jdbc.url}") private string url;3. Dapatkan melalui lingkungan
Ada beberapa hal yang harus diperhatikan dalam metode ini. Tidak semua metode konfigurasi mendukung mendapatkan nilai properti melalui antarmuka lingkungan. Tes pribadi hanya dapat digunakan saat menggunakan anotasi @propertysource, jika tidak null akan diperoleh. Adapun cara mengkonfigurasinya, saya akan membicarakannya segera di bawah ini.
@AutowiredPrivate Environment Env; Public String getUrl () {return env.getProperty ("javadoop.jdbc.url");}Jika terdaftar dengan Spring Boot Application.Properties, itu OK.
Konfigurasi Properti
Kami menyebutkan sebelumnya cara menggunakan properti yang kami konfigurasi, jadi bagaimana cara mengkonfigurasinya? Spring menyediakan banyak metode konfigurasi.
1. Konfigurasikan melalui XML
Berikut ini adalah metode konfigurasi yang paling umum digunakan, dan banyak proyek ditulis seperti ini:
<Konteks: Lokasi pemegang properti-place = "classpath: sys.properties" />
2. Konfigurasi via @PropertySource
Konfigurasi XML sebelumnya sangat umum, tetapi jika Anda juga memiliki keinginan untuk menghilangkan semua file konfigurasi XML, Anda harus menggunakan metode berikut:
@Propertysource ("classpath: sys.properties")@configurationpublic kelas javadoopconfig {}Perhatikan bahwa @propertysource harus digunakan dengan @configuration di sini, jadi saya tidak akan membahas detailnya.
3. PropertyplaceHolderConfigurer
Jika pembaca melihat ini, tidak masalah jika mereka terkejut. Beginilah cara digunakan sebelum musim semi 3.1:
<Bean> <name properti = "Lokasi"> <list> <value> classpath: sys.properties </ value> </list> </pruptent> <properti nama = "pengalih perhatian yang dapat diselesaikan" value = "true"/> <!-beberapa properti dapat dikonfigurasi di sini-> </bean>
Tentu saja, kami juga dapat menggunakan versi konfigurasi Java yang sesuai:
@BeanPublic PropertyplaceHolderConfigurer properties () {PropertPlaceHolderConfigurer ppc = PropertiePlaceHolderConfigurer baru (); Sumber daya [] sumber daya = classpathResource baru [] {new classpathResource ("sys.properties")}; ppc.setlocations (sumber daya); ppc.setignoreUnresolvable placeHolders (true); kembalikan ppc;}4. PropertiesSourcesplaceHolderConfigurer
Ketika Spring 3.1 diluncurkan, PropertiesourcesplaceHolderConfigurer diperkenalkan, yang merupakan kelas baru. Harap dicatat bahwa ada sumber tambahan atas nama PropertyplaceFolderConfigurer sebelumnya, dan paket miliknya berbeda. Itu ada dalam paket konteks musim semi.
Tidak ada perbedaan dalam konfigurasi:
<Bean> <name properti = "Lokasi"> <list> <value> classpath: sys.properties </ value> </list> </pruptent> <properti nama = "pengalih perhatian yang dapat diselesaikan" value = "true"/> <!-beberapa properti dapat dikonfigurasi di sini-> </bean>
Mari juga memiliki versi konfigurasi Java:
@BeanPublic PropertiesSourcesplaceHolderConfigurer Properties () {PropertiesourcesplaceHolderConfigurer pspc = Properti baru SourcePlaceHolderConfigurer (); Sumber daya [] sumber daya = classpathResource baru [] {new classpathResource ("sys.properties")}; pspc.setlocations (sumber daya); pspc.setignoreUnresolvable placeHolders (true); mengembalikan pspc;}Terkait boot musim semi
Spring Boot benar -benar hal yang baik, dan rasanya sangat enak untuk menggunakannya di luar kotak. Berikut adalah pengantar singkat untuk konten yang relevan.
Hasilkan Proyek Boot Musim Semi dengan cepat: https://start.spring.io/
application.properties
Setiap proyek memiliki file application.properties secara default. File konfigurasi ini tidak perlu terdaftar seperti yang disebutkan sebelumnya. Spring Boot akan membantu kami mendaftar secara otomatis.
Tentu saja, mungkin Anda dapat mengubah namanya, tentukan saja nama file Anda saat memulai:
java -dspring.config.location = classpath: sys.properties -jar app.jar
Application- {env} .properties
Untuk menentukan konfigurasi yang berbeda untuk lingkungan yang berbeda, kami akan menggunakannya.
Misalnya, informasi koneksi basis data dari lingkungan pengujian dan lingkungan produksi berbeda.
Oleh karena itu, berdasarkan application.properties, kami juga perlu membuat aplikasi-dev.properties dan application-prd.properties baru untuk mengonfigurasi informasi terkait lingkungan, dan kemudian menentukan lingkungan saat memulai.
java -dspring.profiles.active = prd -jar app.jar
Hasilnya adalah bahwa konfigurasi dalam file application.properties dan application-prd.properties akan terdaftar. Jika ada kunci duplikat, prioritas dalam file application-prd.properties lebih tinggi.
@Configurationproperties
Anotasi ini hanya tersedia di Spring Boot.
Bahkan jika Anda tidak menggunakan anotasi ini, Anda dapat melihat ini dalam proyek open source. Ini adalah pengantar singkat.
Mari kita ambil contoh untuk menjadi lebih intuitif. Seperti yang disebutkan sebelumnya, isi informasi berikut dalam file konfigurasi, Anda dapat memilih untuk menulis ke application.properties atau menggunakan metode yang diperkenalkan di bagian pertama.
javadoop.database.url = jdbc: mysql: javadoop.database.username = adminjavadoop.database.password = admin123456
File Java:
@Configuration@configurationproperties (prefix = "javadoop.database") basis data kelas publik {string url; Nama pengguna string; Kata sandi string; // Getters and Setters}Dengan cara ini, kacang basis data tipe secara otomatis terdaftar dalam wadah pegas, dan properti diatur.
Ubah secara dinamis nilai atribut selama startup
Saya tidak berpikir ini perlu terlalu banyak diperkenalkan, dan mereka yang menggunakan Spring Boot pada dasarnya harus mengetahuinya.
Konfigurasi atribut memiliki urutan override, yaitu, ketika kunci yang sama muncul, nilainya akan berlaku.
Parameter Startup> Application- {env} .properties> application.properties
Parameter Mulai secara dinamis mengatur properti:
java -djavadoop.database.password = admin4321 -jar app.jar
Selain itu, Anda juga dapat menggunakan variabel lingkungan sistem untuk mengatur properti, menentukan angka acak, dll., Yang memang sangat fleksibel, tetapi tidak berguna, jadi saya tidak akan memperkenalkannya.
Meringkaskan
Jika pembaca ingin memiliki pemahaman yang lebih dalam tentang properti musim semi, mereka perlu memahami kode sumber yang terkait dengan antarmuka Lingkungan Musim Semi. Pembaca yang tertarik disarankan untuk mencari kode sumber
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.