We’ve really loved our iniitial work with Spring. Yesterday we started tying it up with Hibernate, and nothing I’ve seen has been a better solution to configuration and database access. It’s great. We seem to have run into a common misuse case though, and I wanted to jot it down for future reference.
We have existing Struts code that we’re adding some Spring and Hibernate stuff to. We’re using
HibernateDaoSupport in creating our own
DAOs, but sometimes they throw a
NullPointerException when calling
getHibernateTemplate(). We go ’round and ’round, but everything seems to be right. We check our
*.hbm.xml files, we check our Spring config files, and find nothing. Then we find that our
Action class looks something like this:
I’m sure you’ve already spotted the problem. The whole principle behind the Spring implementation of Inversion of Control (or Dependency Injection) is that your
Action class is told which
BusinessDelegate to use. If you create your own, it simply isn’t assembled and configured using your Spring setup, and therefore it won’t have the dependencies set properly. And that’s why we’d find
Ahh. It’s written down. Now I’ll find it faster next time I forget…I hope.