/** * Creates {@link ReferenceAnnotationBeanPostProcessor} Bean if Absent * * @return {@link ReferenceAnnotationBeanPostProcessor} */ @ConditionalOnMissingBean @Bean(name = ReferenceAnnotationBeanPostProcessor.BEAN_NAME) public ReferenceAnnotationBeanPostProcessor referenceAnnotationBeanPostProcessor() { return new ReferenceAnnotationBeanPostProcessor(); }
/** * Creates {@link ServiceAnnotationBeanPostProcessor} Bean * * @param environment {@link Environment} Bean * @return {@link ServiceAnnotationBeanPostProcessor} */ @ConditionalOnProperty(name = BASE_PACKAGES_PROPERTY_NAME) @ConditionalOnClass(ConfigurationPropertySources.class) @Bean public ServiceAnnotationBeanPostProcessor serviceAnnotationBeanPostProcessor(Environment environment) { Set<String> packagesToScan = environment.getProperty(BASE_PACKAGES_PROPERTY_NAME, Set.class, emptySet()); return new ServiceAnnotationBeanPostProcessor(packagesToScan); }
@ReadOperation public Map<String, Map<String, Object>> references() { Map<String, Map<String, Object>> referencesMetadata = new LinkedHashMap<>(); ReferenceAnnotationBeanPostProcessor beanPostProcessor = getReferenceAnnotationBeanPostProcessor(); referencesMetadata.putAll(buildReferencesMetadata(beanPostProcessor.getInjectedFieldReferenceBeanMap())); referencesMetadata.putAll(buildReferencesMetadata(beanPostProcessor.getInjectedMethodReferenceBeanMap())); return referencesMetadata; }
protected void configureBean(B bean) throws Exception { preConfigureBean(annotation, bean); configureRegistryConfigs(bean); configureMonitorConfig(bean); configureApplicationConfig(bean); configureModuleConfig(bean); postConfigureBean(annotation, bean); }
@Override protected Object doGetInjectedBean(Reference reference, Object bean, String beanName, Class<?> injectedType, InjectionMetadata.InjectedElement injectedElement) throws Exception { String referencedBeanName = buildReferencedBeanName(reference, injectedType); ReferenceBean referenceBean = buildReferenceBeanIfAbsent(referencedBeanName, reference, injectedType, getClassLoader()); cacheInjectedReferenceBean(referenceBean, injectedElement); Object proxy = buildProxy(referencedBeanName, referenceBean, injectedType); return proxy; }
private String buildReferencedBeanName(Reference reference, Class<?> injectedType) { ServiceBeanNameBuilder builder = ServiceBeanNameBuilder.create(reference, injectedType, getEnvironment()); return getEnvironment().resolvePlaceholders(builder.build()); }
@WriteOperation public Map<String, Object> shutdown() throws Exception { Map<String, Object> shutdownCountData = new LinkedHashMap<>(); // registries int registriesCount = getRegistries().size(); // protocols int protocolsCount = getProtocolConfigsBeanMap().size(); ProtocolConfig.destroyAll(); shutdownCountData.put("registries", registriesCount); shutdownCountData.put("protocols", protocolsCount); // Service Beans Map<String, ServiceBean> serviceBeansMap = getServiceBeansMap(); if (!serviceBeansMap.isEmpty()) { for (ServiceBean serviceBean : serviceBeansMap.values()) { serviceBean.destroy(); } } shutdownCountData.put("services", serviceBeansMap.size()); // Reference Beans ReferenceAnnotationBeanPostProcessor beanPostProcessor = getReferenceAnnotationBeanPostProcessor(); int referencesCount = beanPostProcessor.getReferenceBeans().size(); beanPostProcessor.destroy(); shutdownCountData.put("references", referencesCount); // Set Result to complete Map<String, Object> shutdownData = new TreeMap<>(); shutdownData.put("shutdown.count", shutdownCountData); return shutdownData; }
@Override public void onApplicationEvent(ApplicationEvent event) { if (event instanceof ServiceBeanExportedEvent) { onServiceBeanExportEvent((ServiceBeanExportedEvent) event); } else if (event instanceof ContextRefreshedEvent) { onContextRefreshedEvent((ContextRefreshedEvent) event); } }
/** * Generates the bean name of {@link ServiceBean} * * @param service * @param interfaceClass the class of interface annotated {@link Service} * @param annotatedServiceBeanName the bean name of annotated {@link Service} * @return ServiceBean@interfaceClassName#annotatedServiceBeanName * @since 2.5.9 */ private String generateServiceBeanName(Service service, Class<?> interfaceClass, String annotatedServiceBeanName) { ServiceBeanNameBuilder builder = ServiceBeanNameBuilder.create(service, interfaceClass, environment); return builder.build(); }
@Override public Object resolveShortcut(BeanFactory beanFactory) { return resolveCandidate(this.shortcut, this.requiredType, beanFactory); } }
@Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { injectBeanPostProcessor.setBeanFactory(beanFactory); }
public static ServiceBeanNameBuilder create(Service service, Class<?> interfaceClass, Environment environment) { return new ServiceBeanNameBuilder(service, interfaceClass, environment); }
public InjectionMetadata.InjectedElement createAutowiredFieldElement(Field field, boolean required) { return new AutowiredFieldElement(field, required); }
public AnnotationPropertyValuesAdapter(Annotation annotation, PropertyResolver propertyResolver, boolean ignoreDefaultValue, String... ignoreAttributeNames) { this.annotation = annotation; this.propertyResolver = propertyResolver; this.ignoreDefaultValue = ignoreDefaultValue; this.delegate = adapt(annotation, ignoreDefaultValue, ignoreAttributeNames); }
public static ReferenceBeanBuilder create(Reference annotation, ClassLoader classLoader, ApplicationContext applicationContext) { return new ReferenceBeanBuilder(annotation, classLoader, applicationContext); }
public InjectionMetadata.InjectedElement createAutowiredMethodElement(Method method, boolean required, PropertyDescriptor pd) { return new AutowiredMethodElement(method, required, pd); }
@Override public Object resolveShortcut(BeanFactory beanFactory) { return resolveCandidate(this.shortcut, this.requiredType, beanFactory); } }
@Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { injectBeanPostProcessor.setBeanFactory(beanFactory); }
public static ServiceBeanNameBuilder create(Class<?> interfaceClass, Environment environment) { return new ServiceBeanNameBuilder(interfaceClass, environment); }
public InjectionMetadata.InjectedElement createAutowiredFieldElement(Field field, boolean required) { return new AutowiredFieldElement(field, required); }