Zajímavá utilitka ve Springu

Nejednou jsem si všiml, že spousta vývojářů má tendenci stále dokola vymýšlet kolo, místo toho, aby využili již hotových funkčností. Rozhodl jsem se tedy, že vám čas od času předvedu některé zajímavé utilitky, které se nacházejí v často používaních frameworcích a knihovnách. Dnes si vezmu na paškál Spring framework a jejich package Utils.

Package Utils ve Springu obsahuje spoustu zajímavých utilitek. V následujícím textu představím utilitu StopWatch. Třída org.springframework.util.StopWatch je jednoduchou utilitou, která pracuje jako stopky a nahrazuje konstrukce, které nejsou zcela nejčistší, jako je například tento pattern:

long startTimeMillis = System.currentTimeMillis();

// do something ...

long endTimeMillis = System.currentTimeMillis();
log.debug("Volani trvalo: " + (endTimeMillis - startTimeMillis) + " ms");

Ve springu tedy existují již zmíněné „stopky“. Výhodou jejich použití je zejména zvýšení čitelnosti kódu. Jen upozornění – StopWatch není thread safe (což znamená, že je nutné pro každé měření použít novou instanci této třídy).

Příklad použití:

StopWatch stopWatch = new StopWatch("PrikladPouziti");
try {
    try {
        stopWatch.start("Krok1");
        // do something ...
    } finally {
        stopWatch.stop();
    }
    try {
        stopWatch.start("Krok2");
        // do something else ...
    } finally {
        stopWatch.stop();
    }
} finally {
    log.info(stopWatch.toString());
}

Ten nejzákladnější výstup pak bude následující:

INFO StopWatchTest:34 - StopWatch 'PrikladPouziti': running time (millis) = 437;
                                        [Krok1] took 250 = 57%;
                                        [Krok2] took 187 = 43%

Jenže tahle utilitka umí mnohem více, ale to už nechám na objevení každého z vás.

Vím, že podobná funkčnost je i v balíku Apache Commons Lang, ale tohle je článek o Springu 🙂

[poll id=“1″ type=“result“]

3 odpovědi na “Zajímavá utilitka ve Springu”

  1. Moc pekne, ta moznost stopovani „jednotlivych kol“ a zpusob pouziti se mi libi.
    Myslim, ze to urcite nekdy pouziju (napriklad pri ladeni) 🙂

    Diky Jiriku, tesim se na dalsi davku 😉

Napsat komentář

This site uses Akismet to reduce spam. Learn how your comment data is processed.