SORU
26 Ocak 2012, PERŞEMBE


ContextLoaderListener değil mi?

Standart bir bahar uygulama (Roo tarafından oluşturulan ya da "Spring MVC Projesi" Şablon) web.xml oluşturun ContextLoaderListener *2.* webNeden DispatcherServlet ve tam yapılandırma yükleme yapmak için değil sadece?

Bu ContextLoaderListener değil web ile ilgili şeyler yüklemek için kullanılması gerektiğini anlıyorum ve DispatcherServlet web ile ilgili bir şeyler yüklemek için kullanılır (Denetleyicileri,...). Ve iki bağlamlarda bu sonuç: üst ve alt bağlam.

Arka plan:

Birkaç yıl için bu standart yol yapıyordum.

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:META-INF/spring/applicationContext*.xml</param-value>
</context-param>

<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- Handles Spring requests -->
<servlet>
    <servlet-name>roo</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>WEB-INF/spring/webmvc-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

Bu genellikle iki bağlam ve aralarındaki bağımlılıkları ile ilgili sorunlar neden oldu. Geçmişte her zaman bir çözüm bulmak için başardı, ve bu yazılım yapısı/mimarisi her zaman daha güçlü hissediyorum. Ama şimdi problem with the events of the both contexts ile karşı karşıyayım.

-- Ancak bu benim yeniden düşünmek bu iki bağlam desen, ve soruyorum kendime: neden ben kendim bu sorun neden yüklenmiyor bahar yapılandırma dosyaları ile DispatcherServlet ve çıkarma ContextLoaderListener tamamen. (Ben hala farklı yapılandırma dosyaları, ama tek bir içerik var.)

Herhangi bir nedenle ContextLoaderListener kaldırmak için değil mi?

CEVAP
26 Ocak 2012, PERŞEMBE


Sizin durumunuzda, hayır ContextLoaderListener applicationContext.xml tutmak için bir sebep yok. Eğer bu uygulama ile sopa sadece sunucu uygulaması bağlam ile gayet iyi çalışıyor, ben daha basit bir şey.

Evet, genel olarak teşvik desen web-düzey bağlamında olmayan web eşyalarını tutmak için, ama zayıf bir kongre daha var.

Web-düzey bağlam kullanmak için tek zorlayıcı nedenleri vardır:

  • Eğer 10 ** birden fazla varsa o hizmetleri paylaşmalısınız
  • Eğer varsa eski olmayan Bahar Bahar erişim kablolu hizmetler için gereken sunucu uygulamalarını/
  • Eğer varsa sunucu uygulaması webbapp düzey bağlam (örneğin*, OpenEntityManagerInViewFilter, *11 Bahar Güvenlik vb.) içine kanca filtreler

Bunların hiçbiri sizin için geçerli, ekstra karmaşıklığı yersiz.

Sadece sunucu uygulaması bağlam, zamanlanmış görevler gibi arka plan görevleri eklerken dikkatli olun, JMS bağlantıları, vb. Sizin için <load-on-startup> eklemek unutursanız web.xml, o zaman bu görevleri sunucu ilk erişim çalışmaya kadar olmaz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DONFANTASTICKYPESS

    DONFANTASTIC

    1 Temmuz 2007
  • ItZWaffleS420

    ItZWaffleS42

    9 EYLÜL 2011
  • kylelandry

    kylelandry

    9 AĞUSTOS 2007