下面列出了org.springframework.context.ConfigurableApplicationContext#containsBean ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* 注册dataSource至Spring
*
* @param dataSource 数据源信息
*/
private void addDataSourceToSpring(DataSource dataSource) {
ConfigurableApplicationContext applicationContext = (ConfigurableApplicationContext) this.applicationContext;
HikariDataSource hikariDataSource = new HikariDataSource();
hikariDataSource.setUsername(dataSource.getUser());
hikariDataSource.setPassword(dataSource.getPassword());
hikariDataSource.setJdbcUrl("jdbc:mysql://" + dataSource.getHost() + ":" + dataSource.getPort() + "/" + dataSource.getDatabase() + "?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=CTT");
hikariDataSource.setDriverClassName(dataSource.getDriveName());
JdbcTemplate jdbcTemplate = new JdbcTemplate(hikariDataSource);
if (!applicationContext.containsBean(dataSource.toString())) {
applicationContext.getBeanFactory().registerSingleton(dataSource.toString(), jdbcTemplate);
}
}
/**
* Loads this executor into the ApplicationContext, if it isn't already there
*/
public static void registerIfNeeded(ConfigurableApplicationContext ctx)
{
if (!ctx.containsBean(TransientFailActionExecuter.NAME))
{
// Create, and do dependencies
TransientFailActionExecuter executor = new TransientFailActionExecuter();
executor.setTrackStatus(true);
executor.actionTrackingService = (ActionTrackingService) ctx.getBean("actionTrackingService");
// Register
ctx.getBeanFactory().registerSingleton(TransientFailActionExecuter.NAME, executor);
}
}
@Bean
public InitializingBean functionInitializer(FunctionCatalog functionCatalog, FunctionInspector functionInspector,
StreamFunctionProperties functionProperties, @Nullable BindableProxyFactory[] bindableProxyFactories,
BindingServiceProperties serviceProperties, ConfigurableApplicationContext applicationContext,
FunctionBindingRegistrar bindingHolder, StreamBridge streamBridge) {
boolean shouldCreateInitializer = applicationContext.containsBean("output")
|| ObjectUtils.isEmpty(applicationContext.getBeanNamesForAnnotation(EnableBinding.class));
return shouldCreateInitializer
? new FunctionToDestinationBinder(functionCatalog, functionProperties,
serviceProperties, streamBridge)
: null;
}
/**
* 动态注册并返回bean
* @param applicationContext 应用上下文
* @param name bean name
* @param clazz bean class
* @param args 构造参数
* @param <T> 实体类型
* @return Bean
*/
public static <T> T registerBean(ConfigurableApplicationContext applicationContext, String name, Class<T> clazz, Object... args) {
if (applicationContext.containsBean(name)) {
return applicationContext.getBean(name, clazz);
}
BeanDefinition beanDefinition = build(clazz, args);
return registerBean(applicationContext, name, clazz, beanDefinition);
}