This is a simplified example, but it explains the important point:
ObjectDao.cfc
---------------------
<cfcomponent ...>
...
<cffunction name="load" returntype="Object" ...>
<cfargument name="id" ...>
<cfquery name="qObjects" ...>
...
</cfquery>
<cfif qQuery.recordcount eq 1>
<cfset newObject = getObjectFactory().getBean("Object")>
<cfset newObject.setId(qObject.id)>
<cfset newObject.setProperty(qObject.property_field)>
...
<cfreturn newObject>
</cfif>
...
<!--- Dependency Injection --->
<cffunction name="getObjectFactory" returntype="any" ...>
<cfreturn variables._instance.objectFactory>
</cffunction>
<cffunction name="setObjectFactory" returntype="void" ...>
<cfargument name="objectFactory" ...>
<cfset variables._instance.objectFactory =
arguments.objectFactory>
</cffunction>
</cfcomponent>
coldspring.xml
---------------------
...
<bean id="Object" class="path.to.my.Object" />
<bean id="ObjectFactory" class="path.to.my.ObjectFactory" />
<bean id="ObjectDao" class="path.to.my.ObjectDao">
<constructor-arg name="dsn"><value>myDsn</value></constructor-arg>
<property name="objectFactory"><ref bean="ObjectFactory" /></
property>
</bean>
...
Enough typing!
Ok, this works but I had to create an ObjectFactory class and I was
wondering if it is possible to inject the already existing Coldspring
bean factory instead, i.e. writing something like:
<bean id="ObjectDao" class="path.to.my.ObjectDao">
<constructor-arg name="dsn"><value>myDsn</value></constructor-arg>
<property name="objectFactory"><ref bean="ColdspringBeanFactory" /
></property>
</bean>
Any ideas?
Jesús