Spring 2.5 i JavaEnterprise Edition

Views:
 
     
 

Presentation Description

No description available.

Comments

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 <context:component-scan base-package="org.xh.studies.spring" /> @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 <bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor"> <property name="alwaysUseJndiLookup" value="true" /></bean> @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 <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean" /><bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory" /></bean> <context:component-scan base-package="org.xh.studies.spring.jpa" /><tx:annotation-driven />

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 <context:component-scan base-package="org.xh.studies.spring.jpa"> <context:include-filter type="annotation" expression="javax.ejb.Stateless"/></context:component-scan> @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!