Kami telah belajar untuk menyuntikkan informasi konfigurasi ke dalam variabel objek melalui metode @Value (). Ini karena objek dihosting oleh Spring. Jadi apa yang harus kita lakukan jika kita perlu menggunakan nilai -nilai dalam file konfigurasi dalam metode statis?
Praktik salah tradisional
application.properties
spring.redis.host = tes
@ComponentPublic kelas RedisServiceImpl mengimplementasikan RedisService {... @Value ("$ {spring.redis.host}") host string publik statis; @Value ("$ {spring.redis.port}") port integer publik statis; ... jedispool publik statis getjedispool () {if (redisServiceImpl.host == null) {logger.info ("host tidak disuntikkan"); }}Cetakan konsol: "host tidak disuntikkan
Cara yang benar
@ComponentPublic kelas RedisServiceImpl mengimplementasikan RedisService {... host string publik statis; Port Integer Publik Statis; @Value ("$ {spring.redis.host}") public void setHost (host string) {redisServiceImpl.host = host; } @Value ("$ {spring.redis.port}") public void setport (port integer) {redisServiceImpl.port = port; } ... jedispool publik statis getjedispool () {if (redisServiceImpl.host == null) {logger.info ("host tidak disuntikkan"); } else {logger.info ("Nilai host adalah" + redisServiceImpl.host); }}Konsol dengan benar mencetak nilai yang disuntikkan.
Menyebabkan tebakan
spring memindai komponen. Saat bertemu @Component , objek RedisServiceImpl diinisialisasi. Selama proses inisialisasi, anotasi @Value dipindai dan nilainya disuntikkan ke dalam metode.
Selanjutnya, metode ini memberikan nilai ke kelas RedisServiceImpl , jadi RedisServiceImpl memiliki nilai-solusi positif.
Jika @Value(), ditambahkan langsung ke variabel pribadi statis, saat menginisialisasi objek, Spring tidak beroperasi di kelas karena variabel privat statis termasuk dalam kelas - kesalahan.
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.