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