Detta inlägg visar hur Dependency Injection (DI) kan användas med hjälp av CDI, Guice och Spring. Depencency Injection beskrivs bland annat i Robert Buréns artikel Spring som DI-ramverk. Exemplet i detta inlägg är kraftigt influerat av en artikel jag läste på DZone.
Spring och Guice är två av de vanligaste ramverken för DI. Dessa ramverk kan användas i standalone-, web- och enterprise-applikationer. CDI är ett standardiserat sätt för DI som kommer med Java EE 6 och kan tills vidare därför endast användas i en enterprise-miljö. Spring erbjuder dock stöd för några av de features som definieras av CDI.
Läs mer >>
Apache Camel är ett javabaserat integrationsramverk som innehåller en mängd komponenter. När man konfigurerar kan man använda Spring xml, annoteringar och en Java DSL. Allt är väl beskrivet på Camels hemsida. Eftersom Scala är utvecklat för att enkelt kunna integrera med Java och Javas ramverk är det inte konstigt att är väldigt enkelt att integrera Scala-komponenter i Camel. Det finns även en Scala DSL som kan användas för att konfigurera Camel-routar med. Jag har skrivit ett litet Scala-Camel projekt, WeirdTranslator för att visa på hur Scala i Camel kan fungera. WeirdTranslator är en variant på viskleken, man tar en mening och översätter den mellan ett antal språk och avslutar med att översätta till ursprungsspråket. I detta fallet finns det två vägar att få in och ut text antingen via GTalk, XMPP, och direkt med en TCP socket.
Läs mer >>
Den här artikeln tar upp några punkter att tänka på i enhetstestning, i synnerhet underhåll av tester. Fokus är på stora legacysystem där andra förutsättningar gäller jämfört med tex testdriven nyutveckling.
Läs mer >>
EJB 3.0 är den nu gällande versionen av Java Enterprise Beans(EJB) arkitekturen som ingår i Java EE 5. Syftet med EJB 3.0 är att förbättra arkitekturen för EJB och minska komplexiteten för utvecklaren av EJB applikationer. Detta innebär tex följande förbättringar:
- Annoteringar, det finns ett gäng med annoteringar som man kan använda sig utav för att förenkla arbetet. Dessa annoteringar minskar antalet klasser och interface som man måste skapa och man behöver inte skapa någon deployment descriptor (om man inte vill).
- Defaulta värden, man skall slippa specifiera en massa vanliga förväntade beteenden och krav från EJB-containern.
- Inkapsling av beroenden och JNDI åtkomst via annoteringar och dependency injection (DI)
Businessinterfacet för en sessionsböna kan vara ett vanligt Java-interface, det behöver inte vara av typen EJBObject, EJBLocalObject eller javax.rmi.Remote
Home-interfacet behövs inte längre för sessionsbönor.
- Minskning av krav av användning av checked exceptions
- En interceptor funktionalitet finns för sessions- och message-driven-bönor.
- Entitetsbönor har fått en helt egen specifikation, Java Persistence API (JPA), är numera vanliga POJO’s.
Det finns ett par olika typer av EJB:er, sessionsbönor och message-driven-bönor. Sessionsbönorna kommer i två olika smaker, Stateless och Stateful. Entitetsbönorna har ju som sagt ersatts med JPA entiteter. Jag tänkte gå igenom dessa med små korta exempel. Läs mer >>
Detta inlägg ingår i serien Spring från början och kommer att förklara hur Spring kan konfigureras mha av annotations. Detta är sista delen i denna artikelserie innan vi tar sommaruppehåll men vi ser fram emot fler artiklar till hösten.
Konfiguration av en springapplikation brukar oftast ske mha XML-context som visats i ett antal exempel tidigare i denna serie, bland annat i artikeln om Spring som DI-ramverk. Det finns dock andra möjligheter att konfigurera upp din Spring-applikation. Ett sätt är att använda annotations.
Läs mer >>
Detta inlägg ingår i serien Spring från början och kommer att förklara hur Spring kan användas som DI-ramverk.
Spring som DI-ramverk
Spring är ett Dependency Injection-ramverk (se tidigare artikel gällande Dependency Injection). Det är också så många andra saker, men i sin enklaste form är Spring ändå i första hand ett DI-ramverk.
Om du designar din applikation med hjälp av Dependency Injection kan du konfigurera Spring att hantera hur varje enskild komponent ska skapas, konfigureras och bindas ihop med övriga komponenter. En ”komponent” i Spring är en vanlig POJO, komponenter som hanteras av Spring kallas för ”Spring Beans” (eller på svenska ”bönor”) även om de inte nödvändigtvis måste uppfylla JavaBeans-specifikationen.
Läs mer >>
Detta inlägg ingår i serien Spring från början och kommer att förklara designmönstren Inversion of Control (IoC) och Dependency Injection (DI).
Inversion of Control
Inversion of Control (IoC) är egentligen ett samlingsnamn på en mängd mönster. Dessa mönster uppträder ofta i ramverk. Huvudpoängen är att det inte är den egna applikationskoden som styr programflödet utan att detta sköts av ramverket. IoC är också lite informellt känt som ”Hollywood Principle” – ”don’t call us, We’ll call you.”
Läs mer >>
Idag startar vi en spännande artikelserie: Spring från början! Vi är några Stacktrace-skribenter som planerar att tillsammans ge en steg-för-steg-introduktion till Spring. Vi kommer att börja från grunden med att beskriva designmönstret Dependency Injection och varför det är relevant för Spring. Sen kommer vi att bygga vidare med olika sätt att sätta ihop och konfigurera Spring-applikationer och fortsätta med att gå in på Springs utmärkta stöd för andra ramverk och tekniker.
Artikelserien vänder sig i första hand till nybörjare och relativt oerfarna Spring-utvecklare, men alltefter som vi går in på djupet i olika teknikområden hoppas och tror vi att det ska finnas intressant information även för de mer erfarna.
Vi kommer att uppdatera den här texten med en aktuell innehållsförteckning varje gång ett nytt avsnitt finns tillgängligt, så sätt gärna ett bokmärke här!
Innehållsförteckning
Hittade en bra artikel på TheServerSide.COM som beskriver hur man kan/bör designa sin kod med tanke på att koden ska bli testbar och därmed mindre buggig. Se nedan för en kort sammanfattning av artikeln.
Läs mer >>
Denna artikel behandlar hur man kan kombinera traditionell J2EE-utveckling (applikationsserver med Stateless Session Beans och liknande) med Spring Framework och samtidigt erhålla en kort Code-Build-Test-cykel, hur man får det bästa av två världar. Läs mer >>