Pewnie jak wielu z Was, do tej pory programowałem tylko w PHP, jednak ostatnio nadażyła mi się okazja prowadzenia pewnego projektu w JEE. Wybór padł na Spring Framework. Nie jest to co prawda stricte JEE, ponieważ nie jest oparty o EJB 3.0, lecz o POJO, ale uważam, że jest to tylko zaletą tego frameworka, ze względu na jego prostotę. Spring stał się na tyle uznanym frameworkiem, że jest uznawany prawie za standard w świecie JEE. Nic dziwnego, że cieszy się on taką popularnością, skoro od ukazania się wersji 3.0 ponad 3 mln deweloperów na całym świecie używa go. Niektóre z  wymienianych zalet to:

  • elastyczność – nie trzeba trzymać się z góry ustalonych wzorców, jednak lepiej jest z nich korzystać, co jest podejściem zalecanym,
  • wsteczna kompatybilność z wersją 2.5,
  • twórcy zapowiedzieli już, że jak tylko pojawi się wersja 3.0 specyfikacji Servletów JEE, Spring będzie z nią kompatybilny.

Spring Framework nie jest jednym monolitycznym frameworkiem. Jest on raczej zbiorem różnych technologii i rozwiązań. Nie jest wymagane używania wszystkich z nich. Można dość dowolnie używać wybranych części Springa, jeśli tylko zależności nie wymagają dołączenia do projektu dodatkowych komponentów. Do zarządzania zależnościami i budowania projektu warto użyć Mavena projektu Apache. Ciekaw jestem co myślicie o tandemie Ivy + Ant – jakie są wasze doświadczenia?

Zbiór frameworków które tworzą Spring Framework :

  • Spring Core – kontener beanów, zarządzanie poprzez IoC, Dependency Injection,
  • Spring AOP – Aspect Oriented Programming – wspiera całą architekturę Springa,
  • Spring Context,
  • Spring DAO – pomaga w obsłudze warstwy Data Access Objects,
  • Spring ORM – wspiera różne mechanizmy O/R: JPA – preferowany, Hibernate, TopLink, JDO,
  • Spring OXM – mapowanie XML / Object przy użyciu XMLBeans / JAXB / JiXB / Xstream,
  • Spring Web – różne biblioteki pomagające zintegorować aplikacje, przechwytywać rządania HTTP (dispatcher),
  • Spring WebMVC – framework oparty o wzorzec MVC.

W kolejnych wpisach postaram się jak najściślej opisać takie tematy jak IoC i AOP, wzorce projektowe takie jak DAO.