Saya menggunakan pegas. Saya perlu membaca nilai dari file properti. Ini adalah file properti internal bukan file properti eksternal. File properti bisa seperti di bawah ini.
some.properties ---file name. values are below.
abc = abc
def = dsd
ghi = weds
jil = sdd
Saya perlu membaca nilai-nilai itu dari file properti bukan dengan cara tradisional. Bagaimana cara mencapainya? Apakah ada pendekatan terbaru dengan spring 3.0?
spring
properties-file
pengguna1016403
sumber
sumber
Jawaban:
Konfigurasikan PropertyPlaceholder dalam konteks Anda:
Kemudian Anda merujuk ke properti di kacang Anda:
EDIT: memperbarui kode ke properti parse dengan nilai yang dipisahkan koma mutliple:
Jika itu tidak berhasil, Anda dapat mendefinisikan kacang dengan properti, menyuntikkan dan memprosesnya secara manual:
dan kacang:
sumber
aaa
? Apakah@Value(${aaa}) private String aaa;
kemudian kita dapatSystem.out.println(aaa)
???????@Value("${aaa}")
, ingat tanda kutip. Dan ya, Anda bisa mencetaknya kecuali di konstruktor karena konstruktor dieksekusi sebelum nilai disuntikkan.Ada berbagai cara untuk mencapai hal yang sama. Di bawah ini adalah beberapa cara yang umum digunakan di musim semi-
Menggunakan PropertyPlaceholderConfigurer
Menggunakan PropertySource
Menggunakan ResourceBundleMessageSource
Menggunakan PropertiesFactoryBean
dan masih banyak lagi........................
Dengan asumsi
ds.type
adalah kunci dalam file properti Anda.Menggunakan
PropertyPlaceholderConfigurer
Daftar
PropertyPlaceholderConfigurer
kacangatau
atau
Setelah mendaftar
PropertySourcesPlaceholderConfigurer
, Anda dapat mengakses nilai-Menggunakan
PropertySource
Dalam versi semi terbaru Anda tidak perlu mendaftar
PropertyPlaceHolderConfigurer
dengan@PropertySource
, saya menemukan yang baik link yang memahami versi compatibility-Menggunakan
ResourceBundleMessageSource
Daftar kacang
Nilai Akses-
atau
Menggunakan
PropertiesFactoryBean
Daftar kacang
Contoh Wire Properties ke dalam class- Anda
sumber
Di kelas konfigurasi
sumber
app.properties
dalam pengujian produksi v.? Dengan kata lain, apakah bagian dari proses penyebaran Anda akan digantiapp.properties
dengan nilai-nilai produksi?Berikut adalah jawaban tambahan yang juga sangat membantu saya untuk memahami cara kerjanya: http://www.javacodegeeks.com/2013/07/spring-bean-and-propertyplaceholderconfigurer.html
sumber
PropertySourcesPlaceholderConfigurer
Bean secara eksplisit dengan@PropertySource
@PropertySource
sama sekali.Jika Anda perlu membaca file properti secara manual tanpa menggunakan @Nilai.
Terima kasih atas halaman yang ditulis dengan baik oleh Lokesh Gupta: Blog
sumber
Anda perlu meletakkan kacang PropertyPlaceholderConfigurer dalam konteks aplikasi Anda dan mengatur properti lokasinya.
Lihat detailnya di sini: http://www.zparacha.com/how-to-read-properties-file-in-spring/
Anda mungkin harus sedikit memodifikasi file properti Anda agar benda ini berfungsi.
Semoga ini bisa membantu.
sumber
Cara lain adalah menggunakan ResourceBundle . Pada dasarnya Anda mendapatkan bundel menggunakan namanya tanpa '.properties'
Dan Anda memulihkan nilai apa pun menggunakan ini:
sumber
sumber
Saya akan merekomendasikan membaca tautan ini https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html dari SpringBoot docs tentang menyuntikkan konfigurasi eksternal. Mereka tidak hanya berbicara tentang mengambil dari file properti tetapi juga file YAML dan bahkan JSON. Saya merasa terbantu. Saya harap kamu juga.
sumber
Saya menginginkan kelas utilitas yang tidak dikelola oleh pegas, jadi tidak ada anotasi pegas seperti
@Component
,@Configuration
dll. Tapi saya ingin kelas membaca dariapplication.properties
Saya berhasil membuatnya bekerja dengan membuat kelas menyadari Konteks Musim Semi, karenanya sadar
Environment
, dan karenanyaenvironment.getProperty()
berfungsi seperti yang diharapkan.Secara eksplisit, saya punya:
properti aplikasi
Utils.java
ApplicationContextProvider.java (lihat Spring dapatkan ApplicationContext saat ini )
sumber