2010-12-19

My Spring config style

Не понимаю фанатов Guice. Голый DI без классов удобной интеграции и XML ;-)

Если очень хочется обойтись вообще без XML в Spring:

org.springframework.web.context.support.AnnotationConfigWebApplicationContext

Кстати, в javadoc к нему: "Note: In case of multiple @Configuration classes, later @Bean definitions will override ones defined in earlier loaded files. This can be leveraged to deliberately override certain bean definitions via an extra Configuration class"

То же самое в org.springframework.context.support.ClassPathXmlApplicationContext: In case of multiple config locations, later bean definitions will override ones defined in earlier loaded files. This can be leveraged to deliberately override certain bean definitions via an extra XML file…


Я конфигурирую Spring так:

- org.springframework.web.context.support.XmlWebApplicationContext 

- конфигурируется в web.xml
 
    org.springframework.web.context.ContextLoaderListener
 



- всё что требует гибкой настройки находится в Spring XML.

- всё что окружение-зависимо в .conf файлах читаемых org.springframework.beans.factory.config.PropertyPlaceholderConfigurer

- включены аннотации , наиболее активно используются @Autowired, @Required

- очевидные, однозначные вещи конфигурируются через @Component, @Service, @Repositary (т.е. в XML не присутствуют) через:



IDEA проверяет правильность конфига и соотвествие его Java коду. Получаем замену скриптовым языкам с проверкой на этапе написания/компиляции.

PS: интересная презентация о следующих версиях Spring 3.1, 3.2
http://www.infoq.com/presentations/Spring-3.0-3.1-3.2

PPS: с оказией прошу поддежать включение поддержки JavaScript (rhino) в поставку Spring
https://jira.springframework.org/browse/SPR-1933
свежая версия https://jira.springframework.org/secure/attachment/16144/org.springframework.scripting.rhino_100205.zip

в комментариях есть примеры работы: многопоточной, с передачей объектов из приложения и тд - сказка!
Сейчас со Spring поставляются bsh, JRuby, Groovy - кому первые два нужны неясно.