@Data
public class DataSourceMapBean {
private HashMap hashMap;
}
方式一:属性注入
DefaultListableBeanFactory autowireCapableBeanFactory = (DefaultListableBeanFactory)springApplicationUtil.getApplicationContext().getAutowireCapableBeanFactory();
autowireCapableBeanFactory.removeBeanDefinition("dataSource");
BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(DataSourceMapBean.class);
beanDefinitionBuilder.addPropertyValue("hashMap", dataSources.getHashMap());
autowireCapableBeanFactory.registerBeanDefinition( "dataSource", beanDefinitionBuilder.getBeanDefinition());
方式二 构造方法注入
autowireCapableBeanFactory.removeBeanDefinition("sqlSessionTemplate");
beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(SqlSessionTemplate.class);
beanDefinitionBuilder.addConstructorArgReference("SqlSessionFactory");
autowireCapableBeanFactory.registerBeanDefinition("sqlSessionTemplate", beanDefinitionBuilder.getBeanDefinition());
@Component("springApplicationUtil")
public class SpringApplicationUtil extends ApplicationObjectSupport {
public Object getBean(String beanName){
return super.getApplicationContext().getBean(beanName);
}
}