Kami biasanya meletakkan beberapa perkara yang kerap berubah ke dalam fail konfigurasi.
Sebagai contoh, nombor port application.properties
yang sebelum ini ditulis dalam fail konfigurasi server.port=8080
dan nombor biasa lain termasuk maklumat sambungan pangkalan data, dsb.
Kemudian, maklumat sambungan pangkalan data saya diletakkan dalam fail konfigurasi Jika saya ingin menggunakannya, saya mesti menghuraikan fail konfigurasi dan menggunakan kandungan yang dihuraikan dalam kacang.
Seluruh adegan sebenarnya mengikat semua konfigurasi dalam fail konfigurasi kepada kacang java.
Untuk melengkapkan senario ini, masih agak menyusahkan untuk menulis berdasarkan kod asli java. Biasanya enkapsulasi dibuat, kandungan dalam fail sifat dibaca dan ia dikapsulkan ke dalam JavaBean:
public class getProperties { public static void main(String[] args) throws FileNotFoundException, IOException { Properties pps = new Properties(); pps.load(new FileInputStream("a.properties")); Enumeration enum1 = pps.propertyNames();//得到配置文件的名字 while(enum1.hasMoreElements()) { String strKey = (String) enum1.nextElement(); String strValue = pps.getProperty(strKey); System.out.println(strKey + "=" + strValue); //封装到JavaBean ... ... } }
Di sini, kelas Properties
digunakan untuk memuatkan fail konfigurasia.properties
, dan kemudian melintasi fail konfigurasi Setiap k-v
boleh digunakan di tempat yang sepadan selepas diperolehi.
Proses ini dipermudahkan dalam springboot, iaitu pengikatan konfigurasi.
Lengkapkan pengikatan konfigurasi dengan menggunakan anotasi @ConfigurationProperties
Ambil perhatian bahawa ia perlu digunakan bersama dengan @Component
.
Buat komponen baharu Car
dengan dua atribut: jenama dan harga:
@Componentpublic class Car { private String brand; private Integer price;// get set tostring 就不贴了
Dalam fail konfigurasi application.properties
, tetapkan beberapa nilai atribut, seperti:
mycar.brand=QQmycar.price=9999
Gunakan anotasi @ConfigurationProperties
dan tambahkannya pada komponen:
@Component@ConfigurationProperties(prefix = "mycar")public class Car { private String brand; private Integer price;... ...
Awalan yang diluluskan ialah awalan dalam fail konfigurasi, inilah mycar.
Sekarang mari kita uji sama ada pengikatan itu berjaya. Teruskan menambah kaedah pengawal dalam HelloController
sebelumnya:
@RestControllerpublic class HelloController { @Autowired Car car; @RequestMapping("/car") public Car car() { return car; } @RequestMapping("/hello") public String Hello() { return "Hello SpringBoot2 你好"; }}
Gunakan aplikasi dan aksesnya melalui pelayarhttp://localhost:8080/car
:
Berjaya pengikatan.
Selain kaedah di atas, anda juga boleh menggunakan kaedah @EnableConfigurationProperties
+ @ConfigurationProperties
untuk melengkapkan pengikatan.
Perhatikan bahawa anotasi @EnableConfigurationProperties
harus digunakan pada kelas konfigurasi untuk menunjukkan fungsi mendayakan konfigurasi atribut:
//@ConditionalOnBean(name = "pet1")@Import({User.class, DBHelper.class})@Configuration(proxyBeanMethods = true)@ImportResource("classpath:beans.xml") //配置文件的类路径@EnableConfigurationProperties(Car.class) //开启属性配置的功能public class MyConfig { @Bean("user1") public User user01(){ User pingguo = new User("pingguo",20); pingguo.setPet(tomcatPet()); return pingguo; } @Bean("pet22") public Pet tomcatPet(){ return new Pet("tomcat"); }}
@EnableConfigurationProperties(Car.class)
Lulus dalam kelas untuk mendayakan konfigurasi, yang boleh secara automatik masukkan Kereta Berdaftar ke dalam bekas, iaitu @Component
pada Kereta sebelumnya tidak diperlukan lagi.
//@Component@ConfigurationProperties(prefix = "mycar")public class Car { private String brand; private Integer price;
Gunakan semula alamat akses dan ia akan tetap berfungsi.
Berkenaan senario penggunaan kedua, sebagai contoh, Kereta di sini ialah kelas dalam pakej pihak ketiga, tetapi kod sumber tidak menambah anotasi @Component
. Dalam kes ini, ia boleh Mengikat dengan cara ini.
Akhir sekali, ingat bahawa apabila menggunakan pengikatan konfigurasi @ConfigurationProperties(prefix = "mycar")
, ia adalah perhubungan yang mengikat dengan kandungan fail konfigurasi teras springboot application.properties
.
Atas ialah kandungan terperinci Cara anotasi asas SpringBoot2 @ConfigurationProperties mengkonfigurasi pengikatan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!