لقد تعلمنا ضخ معلومات التكوين في متغيرات الكائن من خلال طريقة Value (). هذا لأن الكائن يستضيفه الربيع. إذن ما الذي يجب أن نفعله إذا احتجنا إلى استخدام القيم في ملف التكوين بطريقة ثابتة؟
الممارسات الخاطئة التقليدية
application.properties
spring.redis.host = اختبار
ComponentPublic Class RedisserviceImpl تنفذ Redisservice {... value ("$ {spring.redis.host}") Static Public String Host ؛ Value ("$ {spring.redis.port}") منفذ عدد صحيح ثابت ؛ ... jedispool jedispool getjedispool () {if (redisserviceImpl.host == null) {logger.info ("Host not enjected") ؛ }}تحكم يطبع: "مضيف لم يتم حقنه
الطريقة الصحيحة
componentpublic class redisserviceImpl تنفذ Redisservice {... static public string host ؛ منفذ عدد صحيح ثابت. value ("$ {spring.redis.host}") public void sethost (string host) {redisserviceimpl.host = host ؛ } value ("$ {spring.redis.port}") public void setport (integer port) {redisserviceimpl.port = port ؛ } ... jedispool getjedispool () {if (redisserviceimpl.host == null) {logger.info ("مضيف غير محقوق") ؛ } آخر {logger.info ("قيمة المضيف هي" + redisserviceimpl.host) ؛ }}تقوم وحدة التحكم بطباعة القيمة المحقونة بشكل صحيح.
لأن تخمين
spring يقوم بمسح المكون. عند مواجهة @Component ، تتم تهيئة الكائن RedisServiceImpl . أثناء عملية التهيئة ، يتم مسح التعليقات @Value ويتم حقن القيمة في الطريقة.
بعد ذلك ، تمرر الطريقة القيمة إلى فئة RedisServiceImpl ، لذلك RedisServiceImpl لها قيمة-الحل الإيجابي.
إذا تمت إضافة @Value(), مباشرة إلى المتغير الخاص الثابت ، عند تهيئة الكائن ، لا يعمل Spring على الفصل لأن المتغير الخاص الثابت ينتمي إلى الفصل - خطأ.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.