my daily spring - best practices with the springframework

Post on 20-Aug-2015

1.569 Views

Category:

Business

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Thorsten Kamann ● thorsten.kamann@itemis.de 11

Best Practices mit dem Spring Framework

Thorsten Kamann ● thorsten.kamann@itemis.de 22

Inhalt

Testen mit Spring

Spring Test-XML DI Transaktionen Annotations

Architekturen unabhängig von Spring

Keine Templates Standards Annotations

Die Spring-IDE

Features Navigation Aspekte Visualisierung

Thorsten Kamann ● thorsten.kamann@itemis.de 33

Die Spring-IDE

Thorsten Kamann ● thorsten.kamann@itemis.de 44

Spring-IDE: Features

Spring 2.5 Spring AOPSpring

Webflow

Spring Explorer

Bean Editor Suchen

Visualisierung

Thorsten Kamann ● thorsten.kamann@itemis.de 55

Spring-IDE: Spring-Explorer

Beans

Properties

Doppelklicköffnet

Element

Thorsten Kamann ● thorsten.kamann@itemis.de 66

Spring-IDE: Project-Explorer

Beans

Properties

Doppelklicköffnet

Element

Thorsten Kamann ● thorsten.kamann@itemis.de 77

Spring-IDE: Beans-Editor

Erweiterter WTP-XML

Editor

XML-Schema

Validierung

Thorsten Kamann ● thorsten.kamann@itemis.de 88

Spring-IDE: Beans-Editor

STRG+SPACE

Thorsten Kamann ● thorsten.kamann@itemis.de 99

Spring-IDE: Beans-Editor

STRG+SPACE

DokumentationP-Namespace

Thorsten Kamann ● thorsten.kamann@itemis.de 1010

Spring-IDE: Beans-Editor

F3

Thorsten Kamann ● thorsten.kamann@itemis.de 1111

Spring-IDE: Beans-Editor

AOP-SupportAOP-Support

Thorsten Kamann ● thorsten.kamann@itemis.de 1212

Spring-IDE: Beans-Editor

Marker für Aspekte

Marker für Aspekte

Thorsten Kamann ● thorsten.kamann@itemis.de 1313

Spring-IDE: Beans-Editor

Refactoring

Thorsten Kamann ● thorsten.kamann@itemis.de 1414

Spring-IDE: Suche

Thorsten Kamann ● thorsten.kamann@itemis.de 1515

Spring-IDE: Visualisierung

Erzeugt grafische Repräsentation

Thorsten Kamann ● thorsten.kamann@itemis.de 1616

DEMO

Thorsten Kamann ● thorsten.kamann@itemis.de 1717

Architekturen unabhängig von

Spring

Thorsten Kamann ● thorsten.kamann@itemis.de 1818

Architekturen: Mit oder ohne Spring?

Templates

*AwareIF

+Ohne Spring nicht compilefähig

Tests nur mit Spring

-

Thorsten Kamann ● thorsten.kamann@itemis.de 1919

Architekturen: Templates

Vereinfachung

Kapselung

Vereinheitlichung

Thorsten Kamann ● thorsten.kamann@itemis.de 2020

Architekturen: Alternative JPA

Standardisiert

EntityManager

Keine Abhängigkeiten

Thorsten Kamann ● thorsten.kamann@itemis.de 2121

Architekturen: Alternative JPA (DAO)

@Repository

public class CustomerDaoImpl implements

CustomerDao {

@PersistenceContext(unitName = "mds-core")

protected EntityManager entityManager;

public List<Customer> findAllCustomers() {

return entityManager.createQuery(

"from CUSTOMER c").getResultList();

}

}

Thorsten Kamann ● thorsten.kamann@itemis.de 2222

Architekturen: Standards

Austauschbare Implementierungen

Zukunftssicher

Know-How

Thorsten Kamann ● thorsten.kamann@itemis.de 2323

Architekturen: Spring-Annotations

Direkt einsetzbar

Keine zus. Konfiguration,Aufwände

+Abhängig von Spring

Komponente in anderen Kontext nicht möglich

-

Thorsten Kamann ● thorsten.kamann@itemis.de 2424

Architekturen: Spring-Annotations

@Target( { ElementType.TYPE })

@Retention(RetentionPolicy.RUNTIME)

@Documented

@Component

public @interface Repository {

String value() default "";

}

Thorsten Kamann ● thorsten.kamann@itemis.de 2525

Architekturen: Spring-Annotations

<bean

class=

„…PersistenceExceptionTranslationPostProcessor„

p:repositoryAnnotationType=

„…Repository"/>

Thorsten Kamann ● thorsten.kamann@itemis.de 2626

Architekturen: Spring-Annotations

import ...annotations.Repository;

@Repository

public class CustomerDaoImpl

implements CustomerDao {

}

Thorsten Kamann ● thorsten.kamann@itemis.de 2727

Testen mit Spring

Thorsten Kamann ● thorsten.kamann@itemis.de 2828

Testen mit Spring: Unittests

Effektive und aussagekräftige Unittest

PoJo

jUnitSpring

Thorsten Kamann ● thorsten.kamann@itemis.de 2929

Testen mit Spring: Unittests

Angepasste Konfigurationen

Dependency Injection

Transaction Management

Annotations

Support Classes

Thorsten Kamann ● thorsten.kamann@itemis.de 3030

Testen mit Spring: Unittests

@ContextConfiguration

• Ermöglicht testspezifische Konfigurationen

• Autom. Erkennung von Konfigurationen

• Angabe von mehreren Konfigurationen•@ContextConfiguration(locations={„…“})

Thorsten Kamann ● thorsten.kamann@itemis.de 3131

Testen mit Spring: Unittests

@RunWith(SpringJUnit4ClassRunner)

@ContextConfiguration

public class CustomerDaoTest{

}

Spring Testrunner

Sucht CustomerDaoText-context.xml im gleichen Package

Thorsten Kamann ● thorsten.kamann@itemis.de 3232

Testen mit Spring: Unittests

@RunWith(SpringJUnit4ClassRunner)

@ContextConfiguration(locations={„my1.xml“, „my2.xml“})

public class CustomerDaoTest{

}

Lädt die Konfiguration ausmy1.xml und my2.xml im gleichen

Package

Thorsten Kamann ● thorsten.kamann@itemis.de 3333

Testen mit Spring: Unittests

Dependency Injection

• Alle von Spring unterstützten Annotations können verwendet werden:•@Autowired, @Resource

• Keine Inheritance von Spring Basisklassen

• Reduziert den Kodierungsaufwand

• Keine Definition von Setter-Methoden erforderlich

Thorsten Kamann ● thorsten.kamann@itemis.de 3434

Testen mit Spring: Unittests

public class CustomerDaoTest{

@Autowired

CustomerDao customerDao

}

<bean id="CustomerDao"

class=„...mds.dataaccess.internal.CustomerDaoImpl"/>

Sucht Bean instanceof CustomerDao

Thorsten Kamann ● thorsten.kamann@itemis.de 3535

Testen mit Spring: Unittests

Transaction Management

•@Transactional

•@TransactionConfiguration

•@BeforeTransaction

•@AfterTransaction

•@Rollback

•@NotTransactional

Thorsten Kamann ● thorsten.kamann@itemis.de 3636

Testen mit Spring: Unittests

@TransactionConfiguration(

transactionManager="transactionManager")

@Transactional

public class CustomerDaoTest{

}

Markiert alle Methoden als Transactional

Verwendet den Transaction-Manager mit dem angegebenen

Namen

Thorsten Kamann ● thorsten.kamann@itemis.de 3737

Testen mit Spring: Unittests

Annotations

•@IfProfileValue

•@ProfileValueSourceConfiguration

•@ExpectedException

•@Timed

•@Repeat

Thorsten Kamann ● thorsten.kamann@itemis.de 3838

Testen mit Spring: Unittests

Support Classes

• AbstractJUnit4SpringContextTests

• Zugriff auf• applicationContext.xml

• AbstractTransactionalJUnit4SpringContextTests

• Zugriff auf• applicationContext.xml

• simpleJdbcTemplate

Thorsten Kamann ● thorsten.kamann@itemis.de 3939

• Springframework Webseitehttp://www.springframework.org

• Spring IDE (Eclipse Plugin)http://www.springide.org

• Thorsten Kamannhttp://www.thorsten-kamann.de

Links

Thorsten Kamann ● thorsten.kamann@itemis.de 4040

top related