annotations java par olivier croisier

Download Annotations Java par Olivier Croisier

Post on 04-Dec-2014

1.117 views

Category:

Technology

0 download

Embed Size (px)

DESCRIPTION

Introduites avec Java 5, les annotations ont ouvert la voie à la méta-programmation et sont aujourd’hui présentes dans tous les frameworks et API Java.Au cours de la conférence, Olivier Croisier reviendra tout d’abord sur le principe des annotations et leur mise en œuvre au quotidien, puis démontrera l’étendue des possibilités qu’elles offrent à la compilation et au runtime, via les Annotation Processors et la Réflexion.Olivier Croisier est expert Java chez Zenika. Il est certifié Java 5.0 avec 100%, Spring 2.5 avec 86% et est formateur certifié Terracotta. Olivier a notamment obtenu le titre de Certified JavaSpecialist Master Course Instructor de la part d’Heinz Kabutz, devenant ainsi le formateur JavaSpecialist de référence en France. Il est également l’auteur du blog The Coder’s Breakfast.

TRANSCRIPT

  • 1. LesAnnotationsJava Enfin expliques simplement!Zenika 1
  • 2. Olivier Croisier Jaime Consultant Zenika tellementses quizzJava! Certifi Java 5.0 (100%) Certifi Spring Framework Formateur certifi JavaSpecialist (javaspecialists.eu) Formateur certifi Terracotta Blog : The Coders Breakfast ( thecodersbreakfast.net ) Twitter : @OlivierCroisier (Effet dramatis en post-production)Zenika 2
  • 3. Plan Prsentation Annotations, mode demploi Annotations personnalises Outillage compile-time Outillage runtime Injection dannotations ConclusionZenika 3
  • 4. Plan Prsentation Historique O trouver des annotations ? Annotations, mode demploi Annotations personnalises Outillage compile-time Outillage runtime Injection dannotations ConclusionZenika 4
  • 5. Prsentation Historique Java a toujours propos une forme ou une autre de mta- programmation Ds lorigine, loutil "javadoc" permettait dexploiter automatiquement des mta-donnes but documentaire /** /** ** Mthode inutile Mthode inutile ** @param param Un paramtre (non utilis) @param param Un paramtre (non utilis) ** @return Une valeur fixe :: "foo" @return Une valeur fixe "foo" ** @throws Exception Narrive jamais (promis!) @throws Exception Narrive jamais (promis!) */*/ public String foo(String param) throws Exception {{ public String foo(String param) throws Exception return "foo"; return "foo"; }}Zenika 5
  • 6. Prsentation Historique Ce systme tait flexible et a rapidement t utilis / dtourn pour gnrer dautres artefacts : fichiers de configuration, classes annexes... Voir le projet XDoclet (xdoclet.sourceforfge.net) /** /** ** @ejb.bean @ejb.bean ** name="bank/Account" name="bank/Account" ** type="CMP" type="CMP" ** jndi-name="ejb/bank/Account" jndi-name="ejb/bank/Account" ** local-jndi-name="ejb/bank/LocalAccount" local-jndi-name="ejb/bank/LocalAccount" ** primkey-field="id" primkey-field="id" ** @ejb.transaction @ejb.transaction ** type="Required" type="Required" ** @ejb.interface @ejb.interface ** remote-class="test.interfaces.Account" remote-class="test.interfaces.Account" */ */Zenika 6
  • 7. Prsentation Historique Reconnaissant le besoin dun systme de mta-programmation plus robuste et plus flexible, Java 5.0 introduit les Annotations Elles remplacent avantageusement les doclets dans tous les domaines sauf bien sr pour la gnration de la Javadoc ! public class PojoAnnotation extends Superclass {{ public class PojoAnnotation extends Superclass @Override @Override public void overridenMethod() {{ public void overridenMethod() super.overridenMethod(); super.overridenMethod(); }} @Deprecated @Deprecated public void oldMethod(){ public void oldMethod(){ }} }}Zenika 7
  • 8. Prsentation O trouver des annotations ? Java SE propose assez peu dannotations en standard @Deprecated, @Override, @SuppressWarnings 4 mta-annotations dans java.lang.annotation Celles dfinies par JAXB et Commons Annotations @ @ Java EE en fournit une quantit impressionnante Pour les EJB 3, les Servlets 3, CDI, JSF 2, JPA... @ Les frameworks modernes en tirent galement parti Spring, Hibernate, CXF, Stripes... Dveloppez les vtres !Zenika 8
  • 9. Plan Prsentation Annotations, mode demploi Elements annotables Annoter une classe, une mthode ou un champ Annoter un package Paramtres dannotations Restrictions et astuces Annotations personnalises Outillage compile-time Outillage runtime Injection dannotations ConclusionZenika 9
  • 10. Annotations, mode demploi Elements annotables Les annotations peuvent tre apposes sur les lments suivants : Les classes, interfaces et enums Les proprits de classes Les constructeurs et mthodes Les paramtres des constructeurs et mthodes Les variables locales et dautres lments encore grce la JSR 308 (Java 7 8) Mais aussi sur... Les packages Les annotations elles-mmes (mta-annotations) !Zenika 10
  • 11. Annotations, mode demploi Annoter une classe, mthode ou champ @Deprecated @Deprecated public class Pojo {{ public class Pojo @Deprecated @Deprecated private int foo; private int foo; @Deprecated @Deprecated public Pojo() {{ public Pojo() @Deprecated @Deprecated int localVar ==0; int localVar 0; }} @Deprecated @Deprecated public int getFoo() {{ public intfoo; return getFoo() return foo; }} public void setFoo(@Deprecated int foo) {{ public void setFoo(@Deprecated int foo) this.foo ==foo; this.foo foo; }} }}Zenika 11
  • 12. Annotations, mode demploi Annoter un package Comment annoter un package ? La dclaration dun package est prsente dans toutes les classes appartenant ce package. Impossible dy placer une annotation : risque de conflit ou dinformation incomplte ! @Foo @Foo package com.zenika.presentation.annotations; package com.zenika.presentation.annotations; public class ClassA {} public class ClassA {} @Bar @Bar package com.zenika.presentation.annotations; package com.zenika.presentation.annotations; public class ClassB {} public class ClassB {}Zenika 12
  • 13. Annotations, mode demploi Annoter un package Solution : pour annoter un package, il faut crer un fichier spcial nomm package-info.java Il contient uniquement la dclaration du package, accompagn de sa javadoc et de ses annotations /** /** ** Ce package contient le code source de Ce package contient le code source de ** la prsentation sur les annotations. la prsentation sur les annotations. */ */ @Foo @Foo @Bar @Bar package com.zenika.presentation.annotations; package com.zenika.presentation.annotations;Zenika 13
  • 14. Annotations, mode demploi Paramtres dannotations Les annotations peuvent prendre des paramtres Ils peuvent tre obligatoires ou facultatifs (ils prennent alors la valeur par dfaut spcifie par le dveloppeur de lannotation) Les paramtres se prcisent entre parenthses, la suite de lannotation ; leur ordre nest pas important @MyAnnotation( param1=value1, param2=value2... )) @MyAnnotation( param1=value1, param2=value2... Si lannotation ne prend quun paramtre, il est souvent possible dutiliser une notation raccourcie @MyAnnotation( value )) @MyAnnotation( valueZenika 14

Recommended

View more >