Presentation Transcript
Spring 2.5 z punktu widzenia programisty JavaEnterprise Edition :Spring 2.5 z punktu widzenia programisty JavaEnterprise Edition Łukasz Budnik 20/11/2008
Agenda :Agenda Przegląd nowości Spring 2.5
Budowa przykładowej aplikacji JEE 5.0
2.1. Wykorzystanie JSR 250 do definiowania metod typu callback oraz wstrzykiwania zasobów
2.2. Wykorzystanie Java Persistance API jako warstwy danych JEE 5.0
2.3. Wykorzystanie JSR 220 do definiowania komponentów JEE 5.0
Podsumowanie
1. Przegląd nowości w Spring 2.5 :1. Przegląd nowości w Spring 2.5
Nowe mechanizmy Spring 2.5 :Nowe mechanizmy Spring 2.5 @Autowire, @Qualifier
AspectJ
Load time weaving
Nowe namespace’y (np. context, jms)
Spring TestContext Framework (np. wstrzykiwanie zależności do testów JUnit)
Pełne wsparcie JDK 1.6 :Pełne wsparcie JDK 1.6 JDBC 4.0
JMX MXBeans
ServiceLoader API
JTA 1.1
JAX-WS 2.0
Wsparcie JEE 5.0 :Wsparcie JEE 5.0 Servlet 2.5
JSP 2.1
JSF 1.2
JCA 1.5
częściowa implementacja JSR 250Common Annotations for the Java™ Platform
częściowa implementacja JSR 220Enterprise JavaBeans™
2. Budowa przykładowej aplikacji JEE :2. Budowa przykładowej aplikacji JEE
2.1. Wykorzystanie JSR 250 :2.1. Wykorzystanie JSR 250
JSR 250 :JSR 250
@PostConstructprivate void init() { log.info("ctx injected? ==> " + (ctx != null));}
@PreDestroyprivate void clean() { log.info("Some clean up here...");}
@Resource(name = "helperServiceNewImpl")private HelperService helperService;
JSR 250 & JNDI :JSR 250 & JNDI
@Resource(name = "jdbc/MyDataSource")private DataSource dataSource;
2.2. Wykorzystanie JPA jako warstwy danych :2.2. Wykorzystanie JPA jako warstwy danych
Wsparcie dla JPA :Wsparcie dla JPA @PersistenceContext/@PersistenceUnit - już od Spring 2.0
@Transactional – Spring specific
@TransactionAttribute - EJB 3.0, dostępne od Spring 2.5
JPA – AppContext.xml :JPA – AppContext.xml
JPA - Java :JPA - Java @Repositorypublic class UserJPADAOImpl { Log log = LogFactory.getLog(UserJPADAOImpl.class); @PersistenceContext private EntityManager em; @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) public void create(User user) { em.persist(user);
}}
2.3. Wykorzystanie JSR 220 do definiowania komponentów :2.3. Wykorzystanie JSR 220 do definiowania komponentów
JSR 220 wspierane anotacje :JSR 220 wspierane anotacje @Stateless/@Stateful
@TransactionAttribute
@EJB
@Stateless/@Stateful :@Stateless/@Stateful
@Statelesspublic class UserJPADAOImpl implements UserJPADAO { /* kod tutaj */}
@EJB :@EJB @Stateless
public class XImpl implements X {
Log log = LogFactory.getLog(XImpl.class);
@EJB
private UserJPADAO userJPADAO;
@PostConstruct
private void init() {
log.info("Spring EJB userJPADAO injected successfuly? ==> " + (userJPADAO != null));
}
}
3. Podsumowanie :3. Podsumowanie
Wady :Wady Programista nie może używać Springowych anotacji (po przeniesieniu aplikacji na serwer aplikacji nie będą one domyślnie interpretowane)
Programista musi pamiętać, że niektóre anotacje działają inaczej na serwerze aplikacji a inaczej gdy aplikacja uruchamiana jest w Springowym kontenetrze (przykład @Resource)
Zalety :Zalety Aplikacja napisana z użyciem JSR 250, JPA, JSR 220 może być uruchamiana zarówno na serwerze aplikacji jak i zwykła aplikacja Springowa typu standalone
Stworzylismy aplikację w JEE 5.0, wszystko działa poprawnie, ale czujemy, że trochę przesadziliśmy z infrastrukturą i technologią dla tak małej aplikacji (np. zasobożerny serwer aplikacji).Wystarczy jedynie skonfigurować poprawnie Springa i przenieść aplikację na zwykłego TomcataDo ciągnięcia przyczepki wystarczy osobowy samochód, nie potrzebujemy do niej 6 osiowej ciężarówki.
W drugą stronę, napisaliśmy aplikację Springową dla której Tomcat to już za mało, potrzebujemy kontenera JEE w oparciu o który możemy przekształcić istniejącą aplikację w prawdziwy rozproszony system
Więcej o Spring 2.5 i JEE :Więcej o Spring 2.5 i JEE http://jee-bpel-soa.blogspot.com/2008/11/spring-for-jee-developers-jsr-250.html
http://jee-bpel-soa.blogspot.com/2008/11/spring-for-jee-developers-jpa.html
http://jee-bpel-soa.blogspot.com/2008/11/spring-for-jee-developers-stateless-ejb.html
http://jee-bpel-soa.blogspot.com/
Pytania? :Pytania?
Dzięx! :Dzięx!