2009. szeptember 8., kedd

@Autowired és társai

Mostanában gyakran beleakadok a spring framework @Autowired annotációjába, amit kifejezetten private mezőkre húztak rá, amin nincs setter sem. Pl...

@Autowired
private Datasource datasource;

Az a kifogásom ellene, hogy:
  • besettelni sem lehet neki valami mást
  • springen kívül nem lehet inicializálni
  • elég sok időbe tellik kibogarászni hogy vajon mi lesz ide besettelve
Nem olyan, mint a JdbcTemplate, amit szerintem simán más framework-re is bele lehet tuszkolni, és ráadásul nagyon hasznos. Sikerült portolhatatlanná tenni a kódot, pedig a spring úgy indult annak idején, hogy non-intrusive IoC framework. Másrészt ez olyan, mintha service lookup-ot használnánk, annyi előnnyel, hogy a boilerplate kódot átvette a spring. Viszont akkor már ilyet is csinálhatnánk:

@JndiLookup("jdbc/MyDS")
private Datasource datasource;