2014-11-17 1 views
2

Grails 2.1.1로 작성된 서비스를 제공하는 Grails 플러그인을 작성했습니다. 이제 Grails 2.4.4를 사용하여 새로운 Grails 프로젝트를 만들었고 서비스를 주입하려고했지만 실패했습니다.주입 서비스가 더 오래된 grails 버전을 가지고있을 때 Grails 서비스 삽입이 null이 됨

package testproject 

class HomeController { 

    def myService 

    def index() { 
     println myService 
    } 
} 

항상 null이 인쇄됩니다. 필자는 Grails 2.4.4 프로젝트와 Grail2 2.4.3 프로젝트를 테스트했습니다. 대신 Grails 2.1.1로 Grails Project를 만들면 작동합니다.

왜? 최신 버전의 서비스를 이용할 수 없습니까? 최신 Grails 버전을 사용하려면 항상 서비스가 포함 된 플러그인을 업그레이드해야합니까?

+0

어떻게 플러그인을 설치합니까? 인라인 플러그인이나 maven-install 또는 내부 저장소 (예 : Artifactory)로 배포 하시겠습니까? –

+0

안녕하세요, 로컬 또는 maven-install을 사용하고 있어도 상관 없습니다. 저는 최신 GGTW 릴리즈를 사용하여 Mac OS Yosemite에서 테스트했지만 현재는 3.6.2 릴리스와 함께 Win7, 64 비트에서도 테스트했습니다. 나는 또한 새로운 프로젝트를 위해 grails 2.4.3을 사용했고 같은 문제가 있었다. – Nadya

+0

2.4.3 2.4.3은 확실히 버그가 있습니다 (특히 wrt 플러그인). 'maven-install'을 다시 실행해도 기존 플러그인을 같은 버전으로 대체하지 않으므로 버전을 변경하거나 해당 버전의 maven 로컬 캐시 디렉토리 (예 : $ HOME/.m2/repository/org/grails/plugins/// –

답변

1

나는이 문제도 가지고 있었고, 2.4.4까지 나를 치지 않았다. 나는 Spring Security Plugin에 의존하는 커스텀 보안 플러그인을 가지고있다. 내 플러그인에서 doWithSpring에 맞춤 사용자 세부 정보 서비스를 설정하고 있습니다. 이 정의는 다음과 같습니다.

userDetailsService(UserService) { 
     grailsApplication = ref('grailsApplication') 
     errorService = ref('errorService') 
    } 

내 응용 프로그램과 플러그인에서 userService에 대한 참조가 있습니다. 이 레퍼런스는 Grails 2.4.4에서 삽입이 중단되었습니다. 이 참조를 userDetailsService로 대체하여 문제를 해결할 수있었습니다. 이 서비스의 스프링 보안 버전을 가리키는 것처럼 보이고 내 UserService 클래스에만 존재하는 메소드를 호출하기 때문에이 부분은 마음에 들지 않습니다.

어쨌든 2.4.4의 버그 또는 버그 수정이 확실하지 않지만 플러그인 및/또는 resources.groovy 파일이 MyService 클래스를 다른 것으로 재정의하지 않았는지 확인하십시오.

관련 문제