غرابر: الوصول إلى حبوب الربيع في إغلاق Destroy of Bootstrap Code؟

StackOverflow https://stackoverflow.com/questions/574807

  •  05-09-2019
  •  | 
  •  

سؤال

أنا أتطلع إلى الوصول إلى الفول في إغلاق بلدي تدمير في bootstrap.groovy من مشروع جروج بلدي. أي أفكار حول كيفية تحقيق هذا؟

يبدو لي أن الوصول إلى Servletcontext ...؟

هل كانت مفيدة؟

المحلول

يمكنك الحصول على مرجع AA إلى تطبيق ApplicationContext من كل مكان (بما في ذلك إغلاق Bootstrap) باستخدام جزء من الكود:

def ctx = org.codehaus.groovy.grails.web.context.ServletContextHolder.servletContext.getAttribute(org.codehaus.groovy.grails.web.servlet.GrailsApplicationAttributes.APPLICATION_CONTEXT);

الحصول على إشارة إلى الفول سهلة مثل ctx.beanName.

فيما يلي فئة UTIL صغيرة (مكتوبة في Java) التي يمكن أن تبسيط هذه المهمة:

import org.springframework.context.ApplicationContext;
import org.codehaus.groovy.grails.web.context.ServletContextHolder;
import org.codehaus.groovy.grails.web.servlet.GrailsApplicationAttributes;

public class SpringUtil {

    public static ApplicationContext getCtx() {
        return getApplicationContext();
    }

    public static ApplicationContext getApplicationContext() {
        return (ApplicationContext) ServletContextHolder.getServletContext().getAttribute(GrailsApplicationAttributes.APPLICATION_CONTEXT);
    }

    @SuppressWarnings("unchecked")
    public static <T> T getBean(String beanName) {
        return (T) getApplicationContext().getBean(beanName);
    }

}

ومثال:

def bean = SpringUtil.getBean("beanName")

هتافات، سيجي

نصائح أخرى

أعلم أنني أتأخر هنا وكل ذلك ولكن منذ أن وجدت هذا عبر Google ...

يتم حقن فئة bootstrap الخاص بك مع حبوب الربيع بالاسم، تماما مثل جميع الخدمات وحدات التحكم والأشياء. إذا كنت تريد فاصوليا، فقم فقط ب DER بالاسم وسيتم إظهارها. خلاف ذلك، فقط Def SignApplication والذهاب إلى GrailsApplication.maincontext.getbean إلخ.

هم، لا أستطيع العثور على أي أمثلة من أي شخص حتى استخدام إغلاق كتلة تدمير في bootstrap. من المستندات:

 ليس مضمونا أنه سيتم استدعاء {{destrand}} ما لم يخرج التطبيق بأمان (على سبيل المثال باستخدام أمر إيقاف تشغيل خادم التطبيق) لذلك لا تعتمد على ذلك كثيرا

كخزن، يجب أن أقول أن servletcontext قد تم بالفعل تدميرها بالفعل قبل إغلاق {{destract}} لإغلاق bootstrap، بحيث تكون الفاصوليا التي تحاول الوصول إليها بالفعل. يمكن لأي شخص تأكيد؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top