my daily spring - best practices with the springframework
Post on 20-Aug-2015
1.569 Views
Preview:
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