Spring-Cloud-Context
This article introduces spring-cloud-context
Spring cloud context contains utilities and special services for ApplicationContext
of a Spring cloud application.
- bootstrap context
- encryption
- refresh scope
- environment endpoints
Refresh Scope
@RefreshScope
annotation to put a @Bean
definition in RefreshScope
refresh scope.
RefreshScope
A Scope
implementation that allows for beans to be refreshed dynamically at runtime
ScopedProxyFactoryBean
Convenient proxy factory bean for scoped objects. Proxies returned by this class implement the ScopedObject
interface. This presently allows for removing the corresponding object from the scope, seamlessly creating a new instance in the scope on next access.
RefreshEventListener
Calls ContextRefresher.refresh
when a RefreshEvent
is received.
class GenericScope implements Scope, BeanFactoryPostProcessor,BeanDefinitionRegistryPostProcessor,DisposableBean {
ConfigurableListableBeanFactory beanFactory
BeanLifecycleWrapperCache cache
void setBeanFactory(BeanFactory beanFactory)
}
class RefreshScope extends GenericScope implements ApplicationContextAware,ApplicationListener {
ApplicationContext context
BeanDefinitionRegistry registry
void refreshAll()
}
class ScopedProxyFactoryBean extends ProxyConfig implements FactoryBean, BeanFactoryAware,AopInfrastructureBean {
String targetBeanName
Object proxy
}
class LockedScopedProxyFactoryBean<S extends GenericScope> extends ScopedProxyFactoryBean implements MethodInterceptor {
S scope
String targetBeanName
}
class BeanLifecycleWrapper {
String name
ObjectFactory<?> objectFactory
Object bean
Runnable callback
Object getBean()
void destroy()
}
abstract class ContextRefresher {
RefreshScope scope
Set<String> refresh()
}
class ConfigDataContextRefresher extends ContextRefresher
GenericScope -------> LockedScopedProxyFactoryBean: beanClass
ContextRefresher o------ RefreshScope : refresh
GenericScope *-- BeanLifecycleWrapper