下面列出了org.springframework.context.annotation.AnnotationConfigApplicationContext#setClassLoader ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public ConfigurableApplicationContext createApplicationContext() {
setWebApplicationType(WebApplicationType.NONE);
AnnotationConfigApplicationContext applicationContext =
(AnnotationConfigApplicationContext) super.createApplicationContext();
// applicationContext.setParent(mainApplicationContext);
hackBeanFactory(applicationContext);
applicationContext.setClassLoader(pluginClassLoader);
applicationContext.getBeanFactory().registerSingleton(BEAN_PLUGIN, plugin);
applicationContext.getBeanFactory().autowireBean(plugin);
if (!CollectionUtils.isEmpty(sharedBeanNames)) {
for (String beanName : sharedBeanNames) {
registerBeanFromMainContext(applicationContext, beanName);
}
}
return applicationContext;
}
AbstractApplicationContext createApplicationContext(Domain domain) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.setParent(gatewayApplicationContext);
context.setClassLoader(new ReactorHandlerClassLoader(gatewayApplicationContext.getClassLoader()));
context.setEnvironment((ConfigurableEnvironment) gatewayApplicationContext.getEnvironment());
PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
configurer.setIgnoreUnresolvablePlaceholders(true);
configurer.setEnvironment(gatewayApplicationContext.getEnvironment());
context.addBeanFactoryPostProcessor(configurer);
context.getBeanFactory().registerSingleton("domain", domain);
context.register(HandlerConfiguration.class);
context.setId("context-domain-" + domain.getId());
context.refresh();
return context;
}
AbstractApplicationContext createApplicationContext(Api api) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.setParent(gatewayApplicationContext);
context.setClassLoader(new ReactorHandlerClassLoader(gatewayApplicationContext.getClassLoader()));
context.setEnvironment((ConfigurableEnvironment) gatewayApplicationContext.getEnvironment());
PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
configurer.setIgnoreUnresolvablePlaceholders(true);
configurer.setEnvironment(gatewayApplicationContext.getEnvironment());
context.addBeanFactoryPostProcessor(configurer);
context.getBeanFactory().registerSingleton("api", api);
context.register(ApiHandlerConfiguration.class);
context.setId("context-api-" + api.getId());
context.refresh();
return context;
}
@Override
protected ApplicationContext createApplicationContext() {
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
applicationContext.setClassLoader(getWrapper().getPluginClassLoader());
applicationContext.register(ApplicationConfiguration.class);
applicationContext.refresh();
return applicationContext;
}
@Override
public ProtocolProvider create(String type, ApplicationContext parentContext) {
logger.debug("Looking for an protocol provider for [{}]", type);
Protocol protocol = protocols.get(type);
if (protocol != null) {
try {
ProtocolProvider protocolProvider = createInstance(protocol.protocolProvider());
Plugin plugin = protocolPlugins.get(protocol);
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.setParent(parentContext);
context.setClassLoader(pluginClassLoaderFactory.getOrCreateClassLoader(plugin));
context.setEnvironment((ConfigurableEnvironment) parentContext.getEnvironment());
PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
configurer.setIgnoreUnresolvablePlaceholders(true);
configurer.setEnvironment(parentContext.getEnvironment());
context.addBeanFactoryPostProcessor(configurer);
context.register(protocol.configuration());
context.registerBeanDefinition(plugin.clazz(), BeanDefinitionBuilder.rootBeanDefinition(plugin.clazz()).getBeanDefinition());
context.refresh();
context.getAutowireCapableBeanFactory().autowireBean(protocolProvider);
if (protocolProvider instanceof InitializingBean) {
((InitializingBean) protocolProvider).afterPropertiesSet();
}
return protocolProvider;
} catch (Exception ex) {
logger.error("An unexpected error occurs while loading protocol", ex);
return null;
}
} else {
logger.error("No protocol provider is registered for type {}", type);
throw new IllegalStateException("No protocol provider is registered for type " + type);
}
}
@Override
protected ApplicationContext createApplicationContext() {
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
applicationContext.setClassLoader(getWrapper().getPluginClassLoader());
applicationContext.register(SpringConfiguration.class);
applicationContext.refresh();
return applicationContext;
}