Tôi đang cố gắng truy cập grailsApplication
trong lớp groovy dưới src/groovy
nhưng tôi nhận được một ngoại lệ con trỏ null. Tôi cũng đã cố gắng tiêm một dịch vụ vào cùng một lớp và cùng một kết quả. Làm cách nào để truy cập grailsApplication
hoặc dịch vụ từ lớp học hấp dẫn? (Tôi đang sử dụng Grails 1.3.7)Truy cập grailsỨng dụng hoặc Dịch vụ trong lớp học hấp dẫn
Trả lời
Tiêm phụ thuộc không hoạt động đối với các lớp học hấp dẫn dưới src/groovy
. Bạn có thể nhận được quyền truy cập vào grailsApplication
sử dụng ApplicationHolder
như thế này:
import org.codehaus.groovy.grails.commons.ApplicationHolder
def grailsApplication = ApplicationHolder.application
Bạn có thể truy cập tất cả các dịch vụ như thế này:
def allServicesArtefacts = grailsApplication.services
điều này làm việc như một sự quyến rũ! Cảm ơn rất nhiều ! –
Đối với grails 1.3.7 nó là một giải pháp hoàn hảo. Tuy nhiên đối với grails v2 + bạn nên sử dụng giải pháp từ Tobias Kraft. – Archer
Lớp ApplicationHolder bị phản đối trong Grails phiên bản mới hơn (2.0 trở lên).
Có một cách khác, được mô tả trong một trong blogposts Burt của: http://burtbeckwith.com/blog/?p=1017
thông tin tuyệt vời! cảm ơn! – Archer
Tôi tự hỏi tại sao họ lại phản đối chủ sở hữu của họ và sau đó nói với chúng tôi để viết chủ sở hữu của chúng tôi. Nếu mô hình không hoàn thiện, tại sao họ không sửa lỗi triển khai của họ? –
Bài đăng trên blog thường bị xóa - vì mục đích áp dụng, vui lòng bao gồm câu trả lời thực tế trong bài đăng của bạn, không chỉ là một liên kết! – nickdos
Nếu bạn có các lớp học mà bạn muốn tham gia với dependency injection từ src/groovy hoặc src/java hoặc thậm chí thứ 3 bên lọ tất cả các bạn phải làm là định cấu hình chúng trong grails-app/conf/spring/resources.groovy.
Nếu bạn có mypackage.MyClass lớp trong src/thư mục groovy của bạn trông như thế này:
package mypackage
class MyClass{
def grailsApplication
def myMethod(){
//uses grailsApplication
}
}
Sau đó, bằng cách thêm dòng sau vào grails-app/conf/mùa xuân/resoruces.groovy nó sẽ nhận được tự động tiêm:
myClass(mypackage.MyClass){bean->
bean.autowire = "byName"
}
này sẽ làm việc trong bất kỳ phiên bản của grails thusfar, và như tôi đã nói, bạn thậm chí có thể sử dụng lọ bên thứ 3 - ví dụ tôi luôn luôn có những điều sau đây trong resources.groovy tôi:
jdbcTemplate(org.springframework.jdbc.core.JdbcTemplate){
dataSource = ref('dataSource')
}
Đối với toàn diện hơn see mùa xuân/tài liệu Grails:
Sau Grails 2.0, bạn nên sử dụng:
def grailsApplication = Holders.grailsApplication
- 1. dịch vụ truy cập bên trong một lớp thông thường
- 2. Lớp dịch vụ có quyền truy cập vào HttpContext không?
- 3. Truy cập dịch vụ web từ GWT
- 4. Người dùng truy cập và học thuyết của Symfony2 trong một dịch vụ
- 5. Truy cập FacesContext từ Dịch vụ Web
- 6. Làm thế nào để bạn truy cập Doctrine DBAL trong một lớp dịch vụ Symfony2?
- 7. truy cập vào một lớp học java từ bên trong groovy
- 8. Lớp học truy cập vào lớp học bên trong tư nhân?
- 9. Truy cập dịch vụ Azure MySQL
- 10. Lực hấp dẫn mô phỏng trong XNA
- 11. truy cập phương thức lớp học bên trong java
- 12. Bảo mật mùa xuân đảm bảo lớp dịch vụ, lớp dịch vụ web hoặc cả hai?
- 13. Để quấn hoặc không quấn: Gói dữ liệu truy cập vào mặt tiền dịch vụ
- 14. cốt truyện 3D hấp dẫn trong R
- 15. Phiên truy cập trong dịch vụ WCF từ WebHttpBinding
- 16. Truy cập dữ liệu và bảo mật trong lớp dịch vụ (Doctrine & ZF)
- 17. SQL Server: hấp dẫn bởi GETDATE()
- 18. Love2d và lực hấp dẫn xuyên tâm
- 19. Cách truy cập các dịch vụ SOAP từ iPhone
- 20. Hướng dẫn hoặc ví dụ về Dịch vụ Google Guava?
- 21. Lớp dịch vụ ứng dụng dưới dạng lớp tĩnh
- 22. Android: Truy cập Biến được chuyển đến dịch vụ
- 23. Grails: Cách truy cập i18n từ bộ điều khiển hoặc dịch vụ?
- 24. Mẫu lệnh dẫn đến vụ nổ lớp
- 25. Truy cập các mục Sitecore qua dịch vụ web .NET
- 26. Lỗi khi truy cập Dịch vụ Web với SSL
- 27. Trong lớp truy cập dữ liệu và logic nghiệp vụ riêng biệt, tôi có thể sử dụng các lớp khung thực thể trong lớp nghiệp vụ không?
- 28. Truy cập API dịch vụ web của Microsoft Exchange Server (EWS) trong ứng dụng iOS
- 29. Lỗi khi nhập jar trong kịch bản hấp dẫn (soapUI)
- 30. Lực hấp dẫn hình ảnh của Android
thể trùng lặp của [Grails dịch vụ 2.x tiêm trong Groovy/src] (http://stackoverflow.com/questions/10640480/grails-2-x-service-injection-in-groovy-src) – ataylor