Как получить доступ к классам домена Grails на уровне сервиса Java? - PullRequest
2 голосов
/ 27 апреля 2010

Как я могу использовать доменные классы Grails (в Groovy) в слое сервиса, который находится в Java / Spring.

При использовании Grails MVC все в порядке, так как я могу использовать контроллер для доступа к объектам домена и вызова CRUD и других динамических методов на них. Но что меня интересует, так это чистый способ сделать это из Java - скажем, на уровне сервиса. Например, я могу захотеть разработать систему отчетности, в которой мне нужно использовать доменные объекты для доступа к БД.

Надеюсь, вопрос ясен. Это должно быть стандартной проблемой, с которой все должны столкнуться в рамках проекта разумного размера. Мне просто интересно, как это решается .. может быть, я что-то здесь упускаю.

спасибо.

Ответы [ 3 ]

2 голосов
/ 27 апреля 2010

org.codehaus.groovy.runtime.InvokerHelper делает это довольно просто; см. эту ветку списка рассылки: http://grails.1312388.n4.nabble.com/Calling-Dynamic-Finders-on-Domain-Class-via-the-MetaClass-td1596496.html

1 голос
/ 03 декабря 2014

Пример кода:

import my.package.User
import org.codehaus.groovy.runtime.InvokerHelper;


List allInstances = (List)InvokerHelper.invokeMethod(User.class, "list", null)); 


User one=(User)InvokerHelper.invokeMethod(User.class, "get", id); 
0 голосов
/ 11 августа 2016

Где при InvokerHelper работает хорошо, если у вас есть доступ к классу GORM, я бы поместил функции-оболочки вокруг вызовов GORM - тогда классы Java увидят это.

static String List getAll() { return User.list() }
static String User getByID(long id) { return User.get(id) }

Это выглядит чище и не ставит зависимость от класса Groovy в вашем Java-коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...