[ anon315 @ 29.03.2008. 16:50 ] @
Prelazim na nove mogucnosti Springa 2.5, pa vecinu definicija bean-ova prebacujem iz xml-a u anotacije (@Service, @Controller, @Repository).

Medjutim, naisao sam na jedan problem kod DAO (@Repository)

Ovako mi izgleda relevantan deo applicationContexta:

Code:

 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        
        <!-- ... -->

</bean>

<bean id="nekiDao" class="x.y.z.HibernateNekiDao">
        <property name="sessionFactory" ref="sessionFactory"/>
</bean>


E sada kada prebacim u anotacije, izgleda ovako:

Code:

@Repository("nekiDao")
public class HibernateNekiDao extends HibernateDaoSupport implements NekiDao {

    // ...

}


E sad imam problem - kako da upumpam resource sessionFactory?

Metoda public final void setSessionFactory(org.hibernate.SessionFactory sessionFactory) je, dakle, final, pa ne mogu da je pregazim i anotiram sa @Resource(name = "sessionFactory") ili da autowireujem.
[ anon315 @ 29.03.2008. 17:22 ] @
Dosao sam do ekvivalenta:

Code:

@Resource(name = "sessionFactory")
public void pripremi(SessionFactory sf) {
    super.setSessionFactory(sf);
}


Madjutim, sada moram u svaki DAO da radim copy-paste, sto je u sustini slicno copy-paste u xml-u.

Jel ima neko elegantnije resenje?
[ milas @ 30.03.2008. 13:39 ] @
Pa mozes tu anotaciju premestiti u abstract klasu ili interfejs (npr. neki EJB3DAO ili sl.).
[ anon315 @ 30.03.2008. 16:16 ] @
Ne mogu u abstract klasu, jer vec nasledjujem HibernateDaoSupport.

Kako mislis u interfejs?
[ milas @ 30.03.2008. 23:43 ] @
Vidi da li mozes anotirati interfejs tom anotacijom. Mada, s obzirom da nasledjujes HibernateDaoSupport verovatno ces to morati dodavati u DAOImpl klasama.