Grails 2.0에서 Grails 구성에 액세스하는 방법은 무엇입니까?
최신 Grails 2.0 마일스톤을 획득했으며 ConfigurationHolder
클래스에 대한 사용 중단 경고가 표시됩니다 .
org.codehaus.groovy.grails.commons.ConfigurationHolder
deprecation 메시지는 "대신 의존성 주입을 사용하십시오"라는 메시지로 나에게별로 도움이되지 않습니다. 의존성 주입을 이해하지만 런타임에 액세스 할 수 있도록 적절한 Grails 구성으로 Bean을 연결하려면 어떻게해야합니까? 컨트롤러 및 태그 (예 :)가 아닌 다른 위치에서 구성에 액세스해야합니다 BootStrap
.
의존성 주입을 지원하는 아티팩트에 필요한 경우 간단히 주입하십시오.
grailsApplication
class MyController { def grailsApplication def myAction = { def bar = grailsApplication.config.my.property } }
당신은 말, 콩,에 필요한 경우
src/groovy
또는src/java
사용하여, 최대 와이어를conf/spring/resources.groovy
// 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' } }
다른 곳에서는 구성 개체를 필요한 클래스에 전달하거나 필요한 특정 속성을 전달하는 것이 가장 쉽습니다.
// 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) } }
최신 정보:
Burt Beckwith는 최근 이것에 대한 몇 개의 블로그 게시물을 썼습니다. 하나는 getDomainClass()
도메인 클래스 내에서 사용 하는 방법에 대해 설명 하고 다른 하나는 자체 홀더 클래스 를 만드는 옵션을 제공합니다 (위의 솔루션 중 어느 것도 적절하지 않은 경우).
grailsApplication의 대안은 Holders 클래스입니다.
import grails.util.Holders
def config = Holders.config
홀더에서 직접 구성을 가져 오며 주입이 필요하지 않으므로 유틸리티 클래스 등에 적합합니다.
"grailsApplication"을 소스 파일에 삽입 할 수 있습니다. 다음은 샘플 conf / Bootstrap.groovy입니다.
class BootStrap {
def grailsApplication
def init = { servletContext ->
println grailsApplication.config
}
def destroy = {
}
}
더 이상 사용되지 않는 구성을 가져 오는 또 다른 방법은 다음과 같습니다.
ApplicationContext context = ServletContextHolder.servletContext.
getAttribute(GrailsApplicationAttributes.APPLICATION_CONTEXT)
as ApplicationContext
ConfigObject config = context.getBean(GrailsApplication).config
This works in situations where there is no injected parent available, such as servlet classes or static methods.
You can access grails configuration
In Controller
class DemoController { def grailsApplication def demoAction = { def obj = grailsApplication.config.propertyInConfig } }
In services :
class DemoService { def grailsApplication def demoMethod = { def obj = grailsApplication.config.propertyInConfig } }
In taglib :
class DemoTaglib { def grailsApplication static namespace = "cd" def demoMethod = { def obj = grailsApplication.config.propertyInConfig out << obj } }
You can call this method of taglib in view as <cd:demoMethod/>
In view :
<html> <head><title>Demo</title></head> <body> ${grailsApplication.config.propertyInConfig} </body> </html>
To access from domain class do:
import grails.util.Holders
// more code
static void foo() {
def configOption = Holders.config.myProperty
}
참고URL : https://stackoverflow.com/questions/7133580/how-to-access-grails-configuration-in-grails-2-0
'Program Tip' 카테고리의 다른 글
부모 컨테이너를 기준으로 범위의 시작 및 끝 오프셋 가져 오기 (0) | 2020.11.22 |
---|---|
Python 셸에서 인수를 사용하여 파일 실행 (0) | 2020.11.22 |
선택한 Jquery 플러그인-선택한 값 가져 오기 (0) | 2020.11.22 |
Swift에서 전체 화면 스크린 샷을 찍으려면 어떻게하나요? (0) | 2020.11.22 |
C ++ 참조가 참조하는 변수를 어떻게 변경할 수 있습니까? (0) | 2020.11.22 |