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 >>
Nu när Spring Security 3 precis har släppts så gav jag mig på att uppgradera mitt projekt till den nya releasen.
Utan att läsa på så uppdaterade jag min pom.xml och belönades med ett trasigt bygge.
Ovanligt nog så har Spring släppt en release som inte är bakåtkompatibel, man har nämligen flyttat på de flesta klasser du använder, t ex Userdetails och GrantedAuthority.
I de flesta fall rör det sig om att bara ändra dina importer men det är ju inte en drop-in uppgradering.
Använder ni dessutom Spring Web Flow bör ni vänta med uppgraderingen eftersom Web Flow 2 har ett beroende på en flyttad Spring Security klass. Googlar man på det så ser man att folk har löst problemet genom att skriva en egen Web Flow patch, så det går att komma vidare om man vill.
Men som sagt, att uppgradera till Spring Sercurity 3 är lite krångligare än vad du kanske tror.
Detta inlägg ingår i serien Spring från början och kommer att behandla det transaktionsstöd som finns i springmodulen spring-tx.
Transaktioner är ett sätt att hålla ihop en eller flera operationer. Typiskt gäller principen ”allt eller inget” vilket betyder att alla operationer som ingår i en transaktion ska exekveras utan fel för att transaktionen ska gälla. Det vanligaste fallet är databastransaktioner där exempelvis flera skrivningar måste exekveras utan fel innan en så kallad commit genomförs. Ett exempel på detta är det klassiska bankkontoexemplet med överflyttning av pengar från ett konto till ett annat. En överflyttning sker genom att ett uttag först sker från ett konto och sedan insättning på ett annat konto. Bägge operationerna måste lyckas, annars ska transaktionen inte gälla det vill säga att man ”rullar tillbaka” transaktionen via en så kallad rollback.
Spring erbjuder på ett enhetligt sätt stöd för att kunna hantera transaktioner av olika slag som till exempel JTA, JDBC, Hibernate, JPA och JDO. Transaktionsstödet kan användas på två sätt, deklarativt eller programmatiskt. Det deklarativa sättet är det absolut vanligaste och innebär att metadata kring transaktionslogik inte ligger inbäddad i den faktiska javakoden utan enbart finns deklarerad ”utanför” javakoden via metadata. Metadata kan antingen bestå av externa XML-filer eller annotationer och påverkar alltså inte javakoden, den är så att säga non-intrusive.
Läs mer >>
Detta inlägg ingår i serien Spring från början och kommer att behandla det springstöd som finns för SOAP-baserade webbtjänster i modulen Spring WS.
Läs mer >>
Detta inlägg ingår i serien Spring från början och kommer att behandla Springs stöd för Hibernate. Vi kommer inte att gå närmare in på vad Hibernate är och gör utan koncentrera oss på vad Spring kan hjälpa oss med och hur man kan jobba med HibernateTemplate och andra centrala klasser i modulen spring-orm. ORM står för Object Relational Mapping och modulen spring-orm innehåller dessutom stöd för JPA, TopLink och iBATIS.
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 >>
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
Springmodules cache
Springmodules är en samling av verktyg och tillägg till Spring Framework. Jag halkade in på att använda detta då vi i mitt projekt använde OSCache programatiskt och vi insåg att det blev mycket boilerplate kod. Här är ett typiskt användande av OSCache.
Läs mer >>
Tomcat 6 är numera ute. Vad innebär det egentligen? Jo, för oss som fortfarande ser Tomcat som Servlet/JSP-referensapplikationen (även om det numera egentligen är Glassfish som förärats den beteckningen), så kan vi nu använda Servlet API 2.5 och JSP 2.1.
Jag passade på att läsa på lite: en artikel om nyheterna i JSP 2.1. Och visst finns det en hel del nya grejer, men om det är viktigt eller inte beror nog på vilken synvinkel du har. Servletbitarna använder sig nu av annotations för att förenkla vissa situationer, och på JSP-sidan har man gått långt för att funka bra ihop med JSF. Men på det stora hela är både servlets och JSP beprövade tekniker med många år på nacken, och det är inga revolutionerade grejer som kommer nu. Lite putsning av det befintliga, och så lite påhängsgrejer för att passa med det nya.
(Jo, jag vet om att både Servlet 2.5 och JSP 2.1 varit ute länge nu, men jag har själv inte ännu haft anledning att läsa på om nyheterna.)