Spring в «не Web» приложениях
29 января 2007
Большинство статей/туториалов по Spring Framework заостряют внимание на использовнии его в web приложении, и многие даже не задумываются что можно его использовать по иному. Я несколько раз сталкивался с удивлением других разработчиков, когда они слышали от меня что спринг прекрасно работает в большинстве других случаев, и знаю что иногда его отвергали, несмотря на все его удобства, считая что он не походит для разработки, к примеру, десктопного приложения.
На самом деле контекст приложения очень просто подключается к любому приложению, к примеру через класс FileSystemXmlApplicationContext. При этом всю структуру можно описать в Spring, а далее написать загрузчик типа такого:
public final class Boot {
public static void main(String[] args) throws Exception {
ApplicationContext ctx = new FileSystemXmlApplicationContext("config/main.xml");
App app = (App) ctx.getBean("main.app");
app.run();
}
}
где App это класс приложения (не важно какого, десктоп или просто консоль), который описан бином main.app"" в контексте config/main.xml, и у него есть метод run запускающий это приложение.

января 29, 2007 в 22:20
Спасибо за наводку.
Как раз недавно надо было написать приложение которое с бд работает. Но заломало разбираться, как сделать получить контекст,поэтому тупо сделал модулем в имевшемся веб приложении%)
января 30, 2007 в 08:30
Я думаю, опасения, что спринг не работает на десктопе связан с его монтруозностью. На десктопы предпочитают брать легкие контейнеры типа Pico.
января 30, 2007 в 15:32
Чесно говоря не заметил монструозности в Спринге
2.5 метра весит jar, может и многовато, а сколько pico? можно конечно вырезать лишнее, если не лень.
На производительность он наврядли повлияет, разве вот только на время старта, пока будет парсить эти xml и пр., но имхо тоже настолько незначительно время, что на него можно не обращать внимания.
Или есть еще чтото?
февраля 16, 2007 в 12:37
пико — 110кб
спринг есть смысл юзать в стандалон, если он него нужно что-то «неспринговое»
в смысле, расширения типа AOP, транзакций и прочей хрени, которая собсно к контейнеру не имеет отношения.
пико замечателен своей гибкостью и отсутствием мерзких XML конфигов. вернее, если ты жить не можешь без XML — то пожалуйста, там можно хоть из яваскрипта генерить контекст. но из явы это куда удобнее — рефакторишь и не паришься.
января 4, 2008 в 19:17
Подобный способ использования описывался в книге Spring in Action
июля 7, 2008 в 18:08
А как можно Spring-ом собирать цепочки EJB, чтобы присутствовали локальные и remote EJB?
июля 7, 2008 в 19:25
Про ejb не подскажу, использовал spring лишь как замену ejb.
июля 7, 2008 в 19:28
2xeye: посмотрел, кстати, отдельные jar'ы спринга, core + context занимают суммарно в районе 300к. Если дело в размере то вот, вполне себе немного получается