Compass::Spring uses the CompassTemplate and CompassCallback classes provided by Compass::Core module as part of it's DAO (Data Access Object) support for Spring.
Compass::Spring provides a simple base class called CompassDaoSupport which can be initialized by Compass or CompassTemplate and provides access to CompassTemplate from it's subclasses.
The following code shows a simple Library Dao:
public class LibraryCompassDao extends CompassDaoSupport {
public int getNumberOfHits(final String query) {
Integer numberOfHits = (Integer)getCompassTemplate().execute(
new CompassCallback() {
public Object doInCompass(CompassSession session) {
CompassHits hits = session.find(query);
return new Integer(hits.getLength());
}
}
);
}
return numberOfHits.intValue();
}
The following is an example of configuring the above Library DAO in the XML application context (assuming that we configured a LocalCompassBean named "compass" previously:
<beans>
<bean id="libraryCompass" class="LibraryCompassDao">
<property name="compass">
<ref local="compass" />
</property>
</bean>
</beans>