2013-10-24 3 views
1

Я видел this вопрос, я не могу заставить Groovy работать в моем проекте Spring MVC. Где я должен хранить, и что должно быть полным путем? Пожалуйста, извините меня за основной вопрос, но мне нужно начать с использования Groovy в Spring MVC. Groovy доступен в Spring 4.0 Snapshot и, согласно официальному сайту, окончательная версия должна быть вживую в декабре. Но на данный момент целесообразно использовать версию 4.0? (Он получил встроенную поддержку Groovy)Как создать контроллер Groovy весной MVC

Реферировано код:

<beans ......... 
... 
... 
     <bean class="full.qualified.name.of.ProxyAwareAnnotationMethodHandlerAdapter" /> 
... 
... 
     <lang:groovy script-source="classpath:com/example/mysample.groovy refresh-check-delay="1000" /> 
</beans> 

А класс Java ниже:

//ProxyAwareAnnotationMethodHandlerAdapter.java 

    package name.assafberg.spring; 

    import javax.servlet.http.HttpServletRequest; 
    import javax.servlet.http.HttpServletResponse; 

    import org.springframework.aop.TargetSource; 
    import org.springframework.aop.framework.Advised; 
    import org.springframework.web.servlet.ModelAndView; 
    import org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter; 

    /** 
    * Add proxy awareness to <code>AnnotationMethodHandlerAdapter</code>. 
    * 
    * @author assaf 
    */ 
    public class ProxyAwareAnnotationMethodHandlerAdapter extends AnnotationMethodHandlerAdapter { 

     /** 
     * @param request 
     * @param response 
     * @param handler 
     * @return 
     * @throws Exception 
     * @see org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter#handle(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object) 
     */ 
     @Override 
     public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { 
      handler = unwrapHandler(handler); 

      return super.handle(request, response, handler); 
     } 

     /** 
     * @param handler 
     * @return 
     * @see org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter#supports(java.lang.Object) 
     */ 
     @Override 
     public boolean supports(Object handler) { 
      handler = unwrapHandler(handler); 

      return super.supports(handler); 
     } 

     /** 
     * Attempt to unwrap the given handler in case it is an AOP proxy 
     * 
     * @param handler 
     * @return Object 
     */ 
     private Object unwrapHandler(Object handler) { 
      if (handler instanceof Advised) { 
       try { 
        TargetSource targetSource = ((Advised) handler).getTargetSource(); 
        return targetSource.getTarget(); 

       } catch (Exception x) { 
        throw new RuntimeException(x); 
       } 

      } else { 
       return handler;  
      }  
     } 

    } 

Редактировать

Там нет никакой необходимости иметь дело с вышеуказанными файлами. Единственное, что я должен был позаботиться о версии Groovy. Убедитесь, что из командной строки эта версия Groovy такая же, как версия, добавленная по пути класса. И это сработало. Вряд ли какая-либо конфигурация требуется. Просто создал .groovy класса вместо Java, как (благодаря + Kunal для поучительного.)

@Controller 
class TestController { 
    @Autowired 
    @RequestMapping(value = "/welcome", method = RequestMethod.GET) 
    String People() { 

       return "people" 
      } 

    } 
+0

Немного поздно ... но я тоже пытался использовать Groovy-контроллеры в моем проекте. Я следил за документацией здесь: http://groovy.codehaus.org/Groovy-Eclipse+compiler+plugin+for+Maven И пришлось изменить пазюю версию до 2.1.6 Я не понял ваш метод Autowired on people –

ответ

3

Я спросил, что question тогда, когда я был выяснить способ для создания Groovy контроллеров.

Контроллеры Groovy отлично работали для меня в реальном приложении, которое сейчас находится в производстве более года. Просто, чтобы помочь людям увидеть ценность groovy в проекте Spring MVC, я раздробил приложение Java-приложения Героку и переписал контроллеры в хорошем состоянии. Пожалуйста, проверка проекта здесь:

https://github.com/kdabir/groovy-springmvc-sample

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

EDIT:

Просто чтобы прояснить, вы просто конвертировать .java файлы .groovy и он должен работать (до тех пор, как она действует заводной синтаксис).

+0

Отличная работа @kunal, документирующая использование groovy в приложении Spring MVC, это именно то, что я искал. Spring MVC + Groovy кажется отличной альтернативой для разработчиков Java, которые не желают (или имеют) пройти весь путь до Grails, чтобы воспользоваться преимуществами Groovy. –

+0

Вместо того, чтобы поставить ссылку, если вы положили реальный ответ здесь о том, как вы представили groovy, который поможет ... ответ должен быть ответом, а не указывать на внешнюю статью .. или это должен быть комментарий –

+0

@sudhir, вопрос была ли деловая работа (с 4.0), и ответ был «да, отлично». Ссылка была дополнением для поддержки ответа, а также упоминанием истории чеков для конвертации java-проекта в groovy, если это необходимо. Это была не просто ссылка RTFM, и я не думаю, что все этапы преобразования Java-проекта в groovy должны быть задокументированы здесь как часть ответа. Но я обновил ответ, чтобы точно ответить на вопрос. – kunal

Смежные вопросы