code: @Override
  	public Set<BeanDefinitionHolder> doScan(String... basePackages) {
  		Set<BeanDefinitionHolder> beanDefinitions = super.doScan(basePackages);
  
  		if (beanDefinitions.isEmpty()) {
  			logger.warn("No DaoService was found in '"
  					+ Arrays.toString(basePackages)
  					+ "' package. Please check your configuration.");
  		} else {
  			for (BeanDefinitionHolder holder : beanDefinitions) {
  				GenericBeanDefinition definition = (GenericBeanDefinition) holder
  						.getBeanDefinition();
  
  				if (logger.isDebugEnabled()) {
  					logger.debug("Creating DaoFactoryBean with name '"
  							+ holder.getBeanName() + "' and '"
  							+ definition.getBeanClassName() + "' daoInterface");
  				}
  
  				// the mapper interface is the original class of the bean
  				// but, the actual class of the bean is HibernateDaoFactoryBean
  				definition.getPropertyValues().add("daoInterface",
  						definition.getBeanClassName());
  				definition.getPropertyValues().add("funcs", functions);
  				String className = definition.getBeanClassName();
  				int idx = className.lastIndexOf(".");
  				if (idx > 0)
  					className = className.substring(idx + 1);
  				String em = daoEntityManagerNames.get(className);
  				if (em == null)
  					em = entityManagerName;
  				String sf = daoSessionFactoryNames.get(className);
  				if (sf == null)
  					sf = sessionFactoryName;
  				definition.getPropertyValues().add("entityManagerFactoryName", em);
  				definition.getPropertyValues().add("sessionFactoryName", sf);
  				definition.setBeanClass(DaoFactoryBean.class);
  
  				definition
  						.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_BY_TYPE);
  			}
  		}
  
  		return beanDefinitions;
  	}
docs: Calls the parent search that will search and register all the candidates.
  Then the registered objects are post processed to set them as
  MapperFactoryBeans