SORU
20 AĞUSTOS 2011, CUMARTESİ


Nasıl Grails Grails 2.0 yapılandırma erişmek için?

En son Grails 2.0 kilometre taşı elde ettim, ve bir admin ConfigurationHolder sınıfı için Uyarı görüyorum:

org.codehaus.groovy.grails.commons.ConfigurationHolder

Admin mesajı sadece "bağımlılık enjeksiyon Kullanmak yerine" benim için çok yararlı değildir. Ben bağımlılık enjeksiyon anlıyorum, ama nasıl zamanında giriş yapabilirim çok uygun Grails yapılandırma ile bir fasulye Tel miyim? Yerler benim Denetleyicileri ve Etiketleri (BootStrap) dışında bir yapılandırma erişmek için ihtiyacım var.

CEVAP
21 AĞUSTOS 2011, Pazar


  • Eğer bağımlılık enjeksiyon destekleyen bir obje olarak ihtiyacınız varsa, basitçe grailsApplication enjekte

    class MyController {
        def grailsApplication
    
        def myAction = {
            def bar = grailsApplication.config.my.property
        }
    }
    
  • Eğer bir fasulye ihtiyacınız varsa, src/groovy src/java söyle conf/spring/resources.groovy Tel kullanarak

    // src/groovy/com/example/MyBean.groovy
    class MyBean {
        def grailsApplication
    
        def foo() {
            def bar = grailsApplication.config.my.property
        }
    }
    
    // resources.groovy
    beans = {
        myBean(com.example.MyBean) {
            grailsApplication = ref('grailsApplication')
            // or use 'autowire'
        }
    }
    
  • Başka bir yerde, muhtemelen en kolay gereken sınıf için yapılandırma nesne geçmek veya gerekli olan belirli özellikler geçirmek istiyor.

    // src/groovy/com/example/NotABean.groovy
    class NotABean {
        def foo(def bar) {
           ...
        }
    }
    
    // called from a DI-supporting artifact
    class MyController {
        def grailsApplication
        def myAction = {
            def f = new NotABean()
            f.foo(grailsApplication.config.my.property)
        }
    }
    

Güncelleme:

Burt Beckwith son zamanlarda bu blog mesajların bir çift yazdı. Diğer creating your own holder class seçeneği sunarken etki alanı sınıfları içinde, * getDomainClass() *16 eğer yukarıdaki çözümler hiçbiri uygun değilse).

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bcbauer

    bcbauer

    7 ŞUBAT 2007
  • CorridorDigital

    CorridorDigi

    17 Mayıs 2010
  • laptopmag

    laptopmag

    25 Ocak 2008