org.test4j.module.spring.strategy.Test4JBeanFactory Maven / Gradle / Ivy
package org.test4j.module.spring.strategy;
import javax.sql.DataSource;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.test4j.module.database.environment.DBEnvironmentFactory;
import org.test4j.tools.commons.ConfigHelper;
@SuppressWarnings("rawtypes")
public class Test4JBeanFactory extends DefaultListableBeanFactory {
public Test4JBeanFactory(final BeanFactory parentBeanFactory) {
super(parentBeanFactory);
}
@Override
public Object getBean(final String name, final Class requiredType, final Object[] args) throws BeansException {
Object bean = getMyBean(name, requiredType, args);
return bean;
}
/**
* 返回容器中的spring对象
*
* @param name
* @return
*/
public Object getSpringBean(final String name) {
Object bean = this.getBean(name, null, null);
return bean;
}
/**
* 返回依赖项的代理对象(对象的调用转向spring容器中的spring bean)
*
* {@inheritDoc}
*
* @param name
* @return
*/
@Override
public Object getBean(final String name) {
return this.getProxyBean(name);
}
/**
* 返回依赖项的代理对象(对象的调用转向spring容器中的spring bean)
*
* @param name
* @return
*/
public Object getProxyBean(final String name) {
return this.getBean(name, null, null);
}
private Object getMyBean(final String name, final Class requiredType, final Object[] args) throws BeansException {
if (ConfigHelper.isSpringDataSourceName(name)) {
DataSource dataSource = DBEnvironmentFactory.getDefaultDBEnvironment()
.getDataSourceAndActivateTransactionIfNeeded();
return dataSource;
} else {
Object bean = super.getBean(name, requiredType, args);
return bean;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy