Spring 2.0

263 views

Published on

News in Spring 2.0. Very short on time and lots of slides, hence the first three slides explains my dialect skånska to the audience. ;)

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
263
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Spring 2.0

  1. 1. Spring 2.0News and codeBjörn Granvik, CTO Jayway
  2. 2. AgendaWhat is Spring?New in Spring 2.0Aspect Oriented ProgrammingSummary
  3. 3. Skånska: R[:R]
  4. 4. Skånska: Diftongerlångt a, [a:] blir ibland ao eller auoe blir ibland eii blir ijo blir iou blir ibland äuy blir ibland öyj, kort y blir ett kort üå blir eåoä blir äö blir ibland öu
  5. 5. Skånska: Kort OrdlistaAaga, agde, agt åka, åkte, åktagebräda enkelt säteagerhuna nyckelpigaainor agnar, fröskal och annat överblivet vid tröskningajja non vara skyldig någon pengar (ja ajjor ingen!)ajjorna "det ägda området"akava [a`ka:va] plötsligt, härstammar troligen från spanskans“acabo". (möjligen från latin?) Uttrycket “acabo de terminar",betyder “jag har nyss avslutat".albuen armbågen jfr danskan!alika [alika] kajaallfret titt och tätt, "esomoftast"alliera föra oväsen, väsnas "på riktigt"allo oväsen, ~ed oväsendetalt forr ret förjämt, alltidansa repareraaoanlär ovanläder (på skor)aoast överstasa släpaaselen axeln lång, öppet "a"attes i går kvällauo av, i t ex auo-slan avslagen, men även som ensamt ord:"den hargåd mitt auo", uttalas ibland “å"auoeded avätetauoeden färdigäten, klar med sin måltidauogauen avgången, bortgången, dödauvand avvänjdavengav öppning mellan två hus oftast med kraftigt drag vid blåstavuring yngling, ngt avvikande.. Kommer eg. från murarspråket, dären avuring är en åttondels tegelsten. En fjärdedels stenkallas pittring eller pettringBbagetru baktrågbaghebba bakkappa på skobagposse bakre nätbehållaren på en ålahummabagvänd i t ex uttrycket: varra bagvänd bete sig avigtbala si vältra sigballna svälla, dra till sig vätskaballyad glosögd jfr. engelskt Ball-eyedbang räddbarfytt barfotabarhuad utan mössabasa ner söla nerbasa si me smutsa ner sig med, även: anstränga sig medbased nersöladbaske eller baska ris, kvistarbede betesmarkbede, et - en stund en omgångbedestickje betestycke, betesmarkbellulk snorvalpbigatt kalvsyltabladda utsmetat klägg, komocka, även verb, i betydelsen smeta utblaga klick, även spottloska, kan även användas som verbblesa verb blåsablians blyertsblar, i bestämd form blaren. Förekommer t ex i uttrycket: Pågen va enliden blar. Eller i ordet pågablära. Blaren var namnet på ettav korten i det medeltida kortspelet Kille. Blaren var narren ikortspelet. Ordet är möjligen härlett från det slaviska ordetför narr eller dåre: "blázen" (tjeckiska).blära subst. blåsa, t ex luftblåsabläreträ vattenpassblöd känslig, ömskinnadblöd mjuk (i bokstavlig betyd.)blöd perf.part. av "ble"=blivabobbe otrevlig typ, av tyskans Bube = knektbog, bööjer bok, böckerboglåda bokhandelbojjel, bojlar bygel, byglarbojsesilla byxhängslenbojsor byxorbojsor torsk-roms-säckar, dessa liknar "byxor", därav namnet!borred buritboss löshalmbra me... "tycke har uppstått..." "di e bra me dom..."braschet (ett västskånskt uttryck) kallt och ruggigtbrenntjessan trollet i brunnen (att skrämma barn med)brogemansvest brudgumsvästbränne vedbrännesnuda ibl. snudesö kraftig soppa på rimmat fläsk med rotsaker ochkål, ibland redd med korn el. havregrynbugagång festlek i samma dignitet som armbrytning, men där det i ställetgäller att mötas buk mot buk och knuffa omkull den andre medbara magenbugastinn rejält mättbuged tjock, stormagadbumpa dunsa, skumpabust stor stark man "u" som i svenska "sjutton"butt stegby ti ämna att göra, försöka sig på (speciellt i negativa sammanhang)byck based blev nersölatbån snörebåsa ongan städabändelbann smalt tygband av t.ex. bomullbö, byck el. bick, böd bli, blev, blivitböjetre bokträbön siddanes! bli (bliven) sittande! eller sitt kvar! bön har formen imperativpluralbösa (substantiv) oväderbööst dåligt, om väder, i uttrycket di e bööst = det är dåligt väder (oväder).Kommer från tyskans böse = illa, stygg, dåligDdann i t ex uttrycket: Akta så du ente bler skiti å dann! svåröversatt ord,med ungefärlig betydelse: sådant, med mera, etceterade é ingen onger... det är inte konstigt, att...de riimer si det går snabbt....de va nock, di lätt kraftuttryck av förargelsedoja, dojde, dojt uthärda, lida "Detta ... har jag minne av att det förÖsterlens del betydde något svåröversatt, men som betydde, attman satt och vilade med alla själsförmögenheter i viloläge, ochkroppen rätt så utfluten i alla riktningar trots sittställningen varnågorlunda upprätt." / Kurt Lassondor dorndraav "maskinbredd" (jordbruk) "omgång" när det gäller aga...drickablenning dryck blandad av mjölk och svagdrickadriva spettakel göra "practical jokes"dropperövad "med svansen mellan benen", sorti med nederlag!drya ge sig i väg, ofta motvilligt för annans vilja!dröutatru "trösketråg" för att skilja frö från skaldummla ti ta små tupplurardunnan åskanduppa vit sås, béchamel-typdyddjed dimmig, oklardårren vansinne i uttrycket “Di e ju rena dårren!"dölled dåligtEebblatre äppelträdeda ätaeje, ejen, ejorna ek, eken, ekarnaeletriker (ibland t o m med betoningen på “-tri-") elektrikerella ellerellas annarsena ensamenstia enstakaettedran långsintettehöstasnittjare (el. -snickare) snickare av tvivelaktig kvalitet, ettepitet som kan användas om hantverkare som är självlärdaoch inte behärskar yrket. Säsongsarbetare förr i tiden,kunde ibland ta snickarjobb och liknande, efter det atthöstningen (skörden) var avklarad. Därav detta uttryck.etteliga, ettelija efter omständligheterna, "i jämförelse med"ettja resaettorhöst årstiden efter skördenevvja vidrig vätska eller ibland något mer trögflytande kläggexekyser konstiga, avvikande övningar...Ffarledd mycket, väldigt, eg. farligt, troligen det vanligasteförstärkningsordet i Österlenskanfelen, feled kusligt, "nästan tokig"filltjed halt, glatt underlag, ibland smutsigtfirre furfissjed ålfisketidenfittemada smörgås ursprung: grovt bröd med flott!fjåned fånigt,dumtfjär, fjära fjäder, fjädrarfjäringsvaj vägbit 2 1/2 kmflage skiva, platta, flak av t ex trä, se även valkeflageflanje, eller flänge öppet fält eller platsflased fräck i munflextra ivajj fara iväg utan förberedelseflinebojsa flinar åt det mestaflinemidda flinar åt det mestaflischa si åsta se till att komma ivägflua, fluor inte bara flugor, utan många andra liknande insekter!flude grädde jfr danskans "flöde"flunka flämta, blinkafly mi karen! ge mig tallrikarna!fly mi giv mig!flåggra fladdraflänge se flanjeflätta ben gå med sirliga stegflättevännare el. plättevännare örfilfnall oväsen, oredafnurred oredafnusta pusta, hämta andanforr i varden förr i världen (tiden)forrfasa si baxna, förvånas på ett rysligt sättforrfudda (u som i mus) skarva till, t ex om en strumpa blivituppsliten på häl och tår, kan man repa upp garnet tillankeln. Därefter kan man sticka på en ny fot. Däravuttrycket. Uttrycket är dock användbart på helt andra saker.forrgrysa si häpna, starkt undraforrhyring gosse (...tror jag i alla fall. Jag kan inte påminna mig omatt detta ord går att använda om småflickor)forrkaffad andtrutenforrkle förklädeforrsjell skillnad jfr danskans forskell!
  6. 6. What is Spring?Lightweight framework Not in number of classes... Lightweight = ”minimal impact” ”POJO container”, suitable for any applicationAn abstract layer for popular technologies JDBC Transaction AOP, ...An alternative way of creating enterprise classapplications
  7. 7. What is Spring?Encourages true component-based programming model POJO based programming Encourage Java interfaces everywhere Simplifies unit testingJava EE integration Simplified support for many Java EE technologies EJB 3.0 just shows that the EJB API has been too complexWeb MVC framework Agnostic approach towards web MVC frameworksRemoting Transform any POJO to a remote service Hessian, Burlap, Serialization
  8. 8. Spring CoreSpringContextSpring DAOSpring ORM Spring WebSpringAOPSpringWebMVCSpring Overview
  9. 9. Dependency InjectionObjC IObjObjA ObjBObjD
  10. 10. Dependency InjectionObjC IObjObjA ObjBObjDFactory
  11. 11. Dependency InjectionObjC IObjObjA ObjBObjDApplicationContext
  12. 12. Dependency InjectionObjC IObjObjA ObjBObjDApplicationContextApplication
  13. 13. Dependency Injection BenefitsUnit testableDependencies are explicitConsistentCan wire up arbitrarily complicated graphsYou don’t need to write plumbing codePluggability Reduces cost of programming to interfacesto zero
  14. 14. Spring CoreBean container Providing all instances of your application classes withall dependencies they need Spring managed resources are called beansBased on Dependency Injection (DI) Aka ”Inversion of Control” (IoC) Cater for all objects and their dependencies Reduces glue codeSource Level Attributes (annotations) Commons Attributes Java 5 annotations
  15. 15. Spring ContextExtension to Spring Core ApplicationContextJNDI EJB support Mail supportRemoting Burlap Hessian SerializationIntegration with template engines Velocity FreeMarker
  16. 16. Sub ProjectsSpring Security (Acegi) Per-method based security frameworkSpring Web Flow State engine for web sites Captures logical page flows as self-contained modulesSpring Rich Client Base library for building Swing clients fasterSpring BeanDoc Generate documentation for Spring beans á la JavaDocSpring IDE for Eclipse Edit and validate Spring configuration files Visualize Spring bean graph
  17. 17. New in Spring 2.0XML-schema based configuration files Simplifies writing Spring configuration files Transaction, JNDI, AOPJDBC named parameters in JdbcTemplates SELECT * FROM banks WHERE id = ? SELECT * FROM banks WHERE id = :bankIdExtended JMS support Message driven POJOs Full XA support in both J2EE and J2SE!AspectJ support Uses AspectJ’s pointcut language Use AspectJ aspects in Spring
  18. 18. New in Spring 2.0 cont’dJava Persistance API (draft) support EJB 3.0Portlet MVC frameworkSpring MVC tag libraryJava 5 annotation support AOP, JMX, ...100% backwards compatible Still only requires Java 1.3 Though deprecated methods have been removed.…and more
  19. 19. Spring 2.0: Easy Configuration<bean id="dataSource" class=“org.springframework.jndi.JndiObjectFactoryBean"><property name="jndiName" value="jdbc/StockData"/></bean><jndi:lookup id="dataSource" jndiName="jdbc/StockData"/>
  20. 20. Spring 2.0: More Configurations<jndi:lookup/> Access JNDI resources<util:properties/> Load properties<aop:*/> Simplified standard AOP configuration Support for AspectJ aspects<tx:*/> Better transactional advice Enable annotation-driven transactions in a single line
  21. 21. Standard JDBC Programmingpublic List getCustomers(int custType) {List result = new ArrayList();Connection connection = null;PreparedStatement statement = null;ResultSet rs = null;try {connection = ds.getConnection();statement = connection.prepareStatement("select * from Customer where type = ?");statement.setInt(1, classfication);rs = statement.executeQuery();while (rs.next()) {Customer customer = new Customer();customer.setId(rs.getInt("Id"));customer.setName(rs.getString("Name"));result.add(customer);}} catch (SQLException ex) {ex.printStackTrace();} finally {closeResultSet(rs);closeStatement(statement);closeConnection(connection);}return result;}
  22. 22. JdbcTemplate Programming...public List getCustomers(int custType) {return new CustomerMappingQuery(ds).execute(custType);}}private class CustomerMappingQuery extends MappingSqlQuery {public CustomerMappingQuery(DataSource ds) {super (ds, "select * from customer where type > :custType");super.declareParameter(new SqlParameter("custType", Types.INTEGER));compile();}public Object mapRow(ResultSet rs, int rowNumber) throws SQLException {Customer customer = new Customer();customer.setId((Integer) rs.getObject("id"));customer.setName(rs.getString("name"));return cust;}}
  23. 23. SimpleJdbcTemplateEase of useUses Java 5 autoboxing and varargssimpleJdbcTemplate.queryForInt("SELECT COUNT(*) FROMCLIENT WHERE TYPE=? AND CURRENCY=?", 13, “SEK");
  24. 24. Aspect Oriented ProgrammingModularize pieces of logic and apply that to manyparts of the applicationHot topic the last 18 month Used in productionSpring AOP has been successful Easy to understand and use Proxy based Ideal partner to IoC Any bean can be adviced Used for security and transactions Supports a declarative and programmaticconfiguration model
  25. 25. Spring AOP ConceptsAspect = Pointcut* + AdvicePointcut = Joinpoint*”Where” inthe executionCode to insert
  26. 26. JoinpointWell defined point duringexecution A call to a method Method invocation Class initialization Object instantiationUsed as ”hooks” foraspectsNameBean bean = new NameBean();bean.foo();InvocationCallObject instantiationClass initialization
  27. 27. PointcutCollection of joinpoints that defines where theadvice should be appliedExample All methods named foo with any number of parametersor named bar with parameter type int execution(* foo(..)) or execution(* bar(int))
  28. 28. AdviceThe additional code you want to apply to yourexisting code (executed at a specific joinpoint)Various types that defines when the adviceshould be executed Before After Around Throws ...Example Log a method call
  29. 29. Combination of advice and pointcutsDefines the code that should be included in theapplication and where it should be executedExample Run code X before all methods in object Order that arenamed save() or load()AspectAdvicePointcut
  30. 30. WeavingThe process of inserting the aspects to theapplication code (at the appropriate point)This is when the ”magic” happens...Two types Compile time RuntimeExample Some AOP classloader in AspectWerkz The ajc compiler in AspectJ The ProxyFactory in Spring
  31. 31. AOP in Spring 2.0Based on dynamic AOP Proxy based Only method execution joinpoints are supportedIntegrates AspectJ powerful pointcut expressionlanguage execution(* foo(..)) or execution(* bar())Fully integrates AspectJ aspects
  32. 32. Spring AOP vs AspectJSpring AOP well suited to Coarse grained application Enterprise services Working with Spring beansAspectJ well suited to Fine grained application Aspect-oriented programmingIn Spring 2.0 we can use them together...
  33. 33. Aspect Example: The POJOpublic class CustomerDAO {private DataSource ds;// Dependency injected by Springpublic void setDataSource(DataSource ds) {this.ds = ds;}// TODO: Need to implement cache functionality!public List getCustomers(int custType) {return new CustomerMappingQuery(ds).execute(custType);}}
  34. 34. Aspect Example: The Advicepublic class CachingAdvice {private HashMap<CacheKey,Object> cachedValues =new HashMap<CacheKey,Object>();public Object cache(ProceedingJoinPoint pjp) throws Throwable {CacheKey key = new CacheKey(pjp.getThis(),pjp.getSignature().getName(),pjp.getArgs());Object value = cachedValues.get(key);if (value == null) {value = pjp.proceed();cachedValues.put(key, value);}return value;}}
  35. 35. Aspect Example: The Composition<beans xmlns="..." ...><aop:config><aop:aspect ref="cacheAdvice"><aop:advice kind="around" method="cache"pointcut="execution(* *..CustomerDAO.getCustomer(int))"/></aop:aspect></aop:config><bean id="cacheAdvice" class="se.jayway.aop.CacheAdvice"/><bean id="customerDAO" class="se.jayway.aop.CustomerDAO"><property id="dataSource" ref="myDS"/></bean><bean id="myDS" class="org.apache.commons.dbcp.BasicDataSource">...</bean></beans>
  36. 36. SummarySpring framework has maturedVery broad From web MVC and rich clients to message driven POJOsAOP changes the way we traditionally code Spring is the good example

×