DomainObjectFactory.java
package com.tradecloud.domain.infrastructure.persistence;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
public class DomainObjectFactory implements BeanFactoryAware {
private AutowireCapableBeanFactory factory;
public void setBeanFactory(BeanFactory factory) throws BeansException {
if (!(factory instanceof AutowireCapableBeanFactory)) {
throw new IllegalArgumentException("BeanFactory must be AutowireCapableBeanFactory");
}
this.factory = (AutowireCapableBeanFactory) factory;
}
public Object newDomainObject(Class clazz) {
return factory.autowire(clazz, AutowireCapableBeanFactory.AUTOWIRE_BY_NAME, false);
}
public boolean injectDependencies(Object object) {
factory.autowireBeanProperties(object, AutowireCapableBeanFactory.AUTOWIRE_BY_NAME, false);
return true;
}
}