Groovy соглашения: где я могу поместить определения метакласса? - PullRequest
3 голосов
/ 09 марта 2011

Я начинаю добавлять некоторые классы Groovy в существующее веб-приложение Java. (Это не приложение Grails)

Есть ли соглашение, которому я должен следовать относительно того, где я определяю свои расширения метакласса?

Кроме того, я написал несколько расширений для помощи в модульных тестах. В настоящее время они находятся в @Before базового класса для тестов, но я подозреваю, что есть более очевидное место, где я должен их настроить.

Любой совет с благодарностью.

Ответы [ 2 ]

5 голосов
/ 03 апреля 2012

Другой вариант - использовать соглашение об именах Groovy для пользовательских метаклассов. Пока вы придерживаетесь соглашения (groovy.runtime.metaclass.[package].[class]MetaClass) и компилируете код с кодом приложения, у вас все будет в порядке. Проверьте это сообщение для получения дополнительной информации. Это также хороший пример.

0 голосов
/ 31 марта 2011

Если бы это было приложение Grails, я бы сказал, поместите его в grails-app/conf/BootStrap.groovy.В любом другом веб-приложении на Java вы можете просто написать реализацию ServletContextListener, которая запускает инициализацию и уничтожение веб-контекста.Зарегистрируйте слушателя в своем web.xml.

public class MetaClassInitializationListener implements ServletContextListener {
   public void contextInitialized(ServletContextEvent event) {
      // do metaClass work
   }

   public void contextDestroyed(ServletContextEvent event) {
   }
}

. Для юнит-тестов базовый класс звучит для меня разумно.Если вы используете JUnit, вы также можете написать реализацию BlockJUnit4ClassRunner .Затем вы можете выбрать, к какому модульному тесту вы хотите применить свои расширения, используя аннотацию @ RunWith .

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