Я отвечу только на те, о которых знаю ...
2. Мы сделали что-то подобное в нашем приложении с пользовательской библиотекой тегов, но это, очевидно, полезно, только если вы используете JSTL. Рассматривали ли вы создание класса, который содержит все URL-адреса в виде статических конечных строк, а затем добавление этого класса во Freemarker в качестве общей переменной ? Ваши аннотации @RequestMapping
в Spring MVC должны иметь возможность ссылаться на те же статические финальные строки.
3. Я рекомендую Direct Web Remoting - он автоматически обрабатывает AJAX-вызовы как на сервере, так и на сайте клиента. После настройки достаточно просто аннотировать методы Java, которые вы хотите вызвать из кода Javascript, а затем DWR генерирует код Javascript, который выполняет эти вызовы для вас и переводит возвращаемые значения в объекты Javascript. У DWR некоторое время не было активной разработки, но я нашел ее очень стабильной и надежной.
5. Что касается, в частности, отложенной загрузки Hibernate, мы просто включаем org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor
Spring, который сохраняет один сеанс открытым для всего веб-запроса. Это устраняет ошибки отложенной загрузки и облегчает понимание поведения Hibernate (т. Е. Поскольку вы всегда находитесь в сеансе, все обновления фиксируются в базе данных). Если вы собираетесь это сделать, сделайте это в начале разработки ... в противном случае существующий код может быть поврежден, потому что если он предполагает, что сессия закрыта.
6. Если ваш сайт - это больше веб-приложение, чем веб-сайт, рассмотрите возможность его создания с Vaadin . Это среда RIA с открытым исходным кодом, построенная на GWT, и мы довольно успешно ее используем в Spring и Hibernate. Мы используем Vaadin для «приложений», таких как инструменты администрирования, и Spring MVC / JSTL для «веб-сайтов», таких как общедоступные страницы; оба встроены в одну WAR с одним и тем же бизнес-уровнем Spring / Hibernate.