2014-04-23 6 views
1

나는 (내 Grails는 응용 프로그램의 BuildConfig.groovy에서)과 같이 컴파일 타임 의존성으로 Grails Spring Security CAS plugin을 선언 할 필요가있는 상황이 있습니다런타임시 Grails Spring 플러그인을 비활성화하는 방법은 무엇입니까?

plugins { 
    // Other plugins omitted for brevity... 

    compile ":spring-security-cas:1.0.5" 
} 

그러나 논리에 따라하는 것은 내가 사용할 수없는 내 런타임까지 응용 프로그램을 동적으로 비활성화/다시 활성화해야합니다.

이 작업을 수행 할 수 있습니까? 그렇다면 어떻게? 그렇지 않다면, 왜?

+1

플러그인 구성에 대한 설명서를 읽고 응용 프로그램을 통해 런타임에 cas.active의 구성 값을 변경해 보았습니까? –

+0

고마워요. @JoshuaMoore - 그게 내 질문의 뿌리 인 것 같았어요. (필자는 Grails에 새로운 브랜드입니다.) 어떤 임의의 POJO에서 어떻게 그 값을 읽고 쓸 수 있습니까? 활성'? – DirtyMikeAndTheBoys

+0

런타임에 구성 값을 변경하려면 GrailsApplication에 대한 참조를 얻어야합니다. 일반적으로 의존성 삽입 ** GrailsApplication grailsApplication **을 사용하여 이것을 수행하고 grailsApplication.config.x.y.z에서 원하는 것을 수정할 수 있습니다. 이제 트릭이됩니다.이 플러그인은 런타임에 해당 값을 변경하는 것을 존중하지 않을 수도 있습니다. 그렇지 않으면 플러그인이 구성 재로드 이벤트 (github의 플러그인 소스 코드 참조)를 처리하는 방법을 살펴보고 자체 코드에서 해당 이벤트를 모방해야 할 수 있습니다. 당신이하고있는 일은 Grails 앱에서 전형적인 것이 아닙니다. –

답변

1

일반적으로 대답은 아니오입니다. Grails에는 "특정 시스템 속성이 설정되어 있으면 특정 플러그인을 완전히 비활성화"하는 것과 같은 것을 표현할 수있는 기능이 없습니다. Grails 플러그인은 실행시 취소하거나 다시 실행할 수없는 많은 일을 할 수 있습니다. 예를 들어, 플러그인은 빌드 할 때 web.xml을 수정할 수 있습니다.

플러그인은 런타임에 환경을 조사하고 그에 따라 다르게 동작하도록 작성할 수 있지만 플러그 인 작성자가이를 고려해야합니다. 일부 플러그인 동작은 런타임시 Spring 애플리케이션 컨텍스트에서 Bean과 상호 작용하여 수정할 수있다. 정말 플러그인에 의존하고 어떤 종류의 동작을 켜고 끄려고하는지에 달려 있습니다.

관련 문제