@Test
public void testPostConstructAndPreDestroyWithManualConfiguration() {
DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
InitDestroyAnnotationBeanPostProcessor bpp = new InitDestroyAnnotationBeanPostProcessor();
bpp.setInitAnnotationType(PostConstruct.class);
bpp.setDestroyAnnotationType(PreDestroy.class);
bf.addBeanPostProcessor(bpp);
bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(AnnotatedInitDestroyBean.class));
AnnotatedInitDestroyBean bean = (AnnotatedInitDestroyBean) bf.getBean("annotatedBean");
assertTrue(bean.initCalled);
bf.destroySingletons();
assertTrue(bean.destroyCalled);
}
java类org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor的实例源码
CommonAnnotationBeanPostProcessorTests.java 文件源码
项目:spring4-understanding
阅读 21
收藏 0
点赞 0
评论 0
CommonAnnotationBeanPostProcessorTests.java 文件源码
项目:spring4-understanding
阅读 21
收藏 0
点赞 0
评论 0
@Test
public void testSerializationWithManualConfiguration() throws Exception {
InitDestroyAnnotationBeanPostProcessor bpp = new InitDestroyAnnotationBeanPostProcessor();
bpp.setInitAnnotationType(PostConstruct.class);
bpp.setDestroyAnnotationType(PreDestroy.class);
InitDestroyAnnotationBeanPostProcessor bpp2 = (InitDestroyAnnotationBeanPostProcessor)
SerializationTestUtils.serializeAndDeserialize(bpp);
AnnotatedInitDestroyBean bean = new AnnotatedInitDestroyBean();
bpp2.postProcessBeforeDestruction(bean, "annotatedBean");
assertTrue(bean.destroyCalled);
}
CommonAnnotationBeanPostProcessorTests.java 文件源码
项目:class-guard
阅读 23
收藏 0
点赞 0
评论 0
@Test
public void testPostConstructAndPreDestroyWithManualConfiguration() {
DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
InitDestroyAnnotationBeanPostProcessor bpp = new InitDestroyAnnotationBeanPostProcessor();
bpp.setInitAnnotationType(PostConstruct.class);
bpp.setDestroyAnnotationType(PreDestroy.class);
bf.addBeanPostProcessor(bpp);
bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(AnnotatedInitDestroyBean.class));
AnnotatedInitDestroyBean bean = (AnnotatedInitDestroyBean) bf.getBean("annotatedBean");
assertTrue(bean.initCalled);
bf.destroySingletons();
assertTrue(bean.destroyCalled);
}
CommonAnnotationBeanPostProcessorTests.java 文件源码
项目:class-guard
阅读 24
收藏 0
点赞 0
评论 0
@Test
public void testSerializationWithManualConfiguration() throws Exception {
InitDestroyAnnotationBeanPostProcessor bpp = new InitDestroyAnnotationBeanPostProcessor();
bpp.setInitAnnotationType(PostConstruct.class);
bpp.setDestroyAnnotationType(PreDestroy.class);
InitDestroyAnnotationBeanPostProcessor bpp2 = (InitDestroyAnnotationBeanPostProcessor)
SerializationTestUtils.serializeAndDeserialize(bpp);
AnnotatedInitDestroyBean bean = new AnnotatedInitDestroyBean();
bpp2.postProcessBeforeDestruction(bean, "annotatedBean");
assertTrue(bean.destroyCalled);
}
OsgiLifecycleBeanFactoryPostProcessor.java 文件源码
项目:James
阅读 20
收藏 0
点赞 0
评论 0
@Override
public void postProcessBeanFactory(BundleContext context, ConfigurableListableBeanFactory factory) throws BeansException, InvalidSyntaxException, BundleException {
// We need to set the beanfactory by hand. This MAY be a bug in spring-dm but I'm not sure yet
LogEnabledBeanPostProcessor loggingProcessor = new LogEnabledBeanPostProcessor();
loggingProcessor.setBeanFactory(factory);
loggingProcessor.setLogProvider(logProvider);
loggingProcessor.setOrder(0);
factory.addBeanPostProcessor(loggingProcessor);
OSGIResourceAnnotationBeanPostProcessor resourceProcessor = new OSGIResourceAnnotationBeanPostProcessor();
resourceProcessor.setBeanClassLoader(factory.getBeanClassLoader());
resourceProcessor.setBeanFactory(factory);
resourceProcessor.setBundleContext(context);
resourceProcessor.setTimeout(60 * 1000);
factory.addBeanPostProcessor(resourceProcessor);
OSGIPersistenceUnitAnnotationBeanPostProcessor persistenceProcessor = new OSGIPersistenceUnitAnnotationBeanPostProcessor();
persistenceProcessor.setBeanClassLoader(factory.getBeanClassLoader());
persistenceProcessor.setBeanFactory(factory);
persistenceProcessor.setBundleContext(context);
persistenceProcessor.setTimeout(60 * 1000);
factory.addBeanPostProcessor(persistenceProcessor);
ConfigurableBeanPostProcessor configurationProcessor = new ConfigurableBeanPostProcessor();
configurationProcessor.setBeanFactory(factory);
configurationProcessor.setConfigurationProvider(confProvider);
configurationProcessor.setOrder(2);
factory.addBeanPostProcessor(configurationProcessor);
InitDestroyAnnotationBeanPostProcessor annotationProcessor = new InitDestroyAnnotationBeanPostProcessor();
annotationProcessor.setInitAnnotationType(PostConstruct.class);
annotationProcessor.setDestroyAnnotationType(PreDestroy.class);
factory.addBeanPostProcessor(annotationProcessor);
}
ResetBeanPostProcessorCaches.java 文件源码
项目:HotswapAgent
阅读 26
收藏 0
点赞 0
评论 0
/**
* Reset all post processors associated with a bean factory.
*
* @param beanFactory beanFactory to use
*/
public static void reset(DefaultListableBeanFactory beanFactory) {
Class<?> c = getReflectionUtilsClassOrNull();
if (c != null) {
try {
Method m = c.getDeclaredMethod("clearCache");
m.invoke(c);
} catch (Exception version42Failed) {
try {
// spring 4.0.x, 4.1.x without clearCache method, clear manually
Field declaredMethodsCache = c.getDeclaredField("declaredMethodsCache");
declaredMethodsCache.setAccessible(true);
((Map)declaredMethodsCache.get(null)).clear();
Field declaredFieldsCache = c.getDeclaredField("declaredFieldsCache");
declaredFieldsCache.setAccessible(true);
((Map)declaredFieldsCache.get(null)).clear();
} catch (Exception version40Failed) {
LOGGER.debug("Failed to clear internal method/field cache, it's normal with spring 4.1x or lower", version40Failed);
}
}
LOGGER.trace("Cleared Spring 4.2+ internal method/field cache.");
}
for (BeanPostProcessor bpp : beanFactory.getBeanPostProcessors()) {
if (bpp instanceof AutowiredAnnotationBeanPostProcessor) {
resetAutowiredAnnotationBeanPostProcessorCache((AutowiredAnnotationBeanPostProcessor)bpp);
} else if (bpp instanceof InitDestroyAnnotationBeanPostProcessor) {
resetInitDestroyAnnotationBeanPostProcessorCache((InitDestroyAnnotationBeanPostProcessor)bpp);
}
}
}
ResetBeanPostProcessorCaches.java 文件源码
项目:HotswapAgent
阅读 24
收藏 0
点赞 0
评论 0
public static void resetInitDestroyAnnotationBeanPostProcessorCache(InitDestroyAnnotationBeanPostProcessor bpp) {
try {
Field field = InitDestroyAnnotationBeanPostProcessor.class.getDeclaredField("lifecycleMetadataCache");
field.setAccessible(true);
Map lifecycleMetadataCache = (Map) field.get(bpp);
lifecycleMetadataCache.clear();
LOGGER.trace("Cache cleared: InitDestroyAnnotationBeanPostProcessor.lifecycleMetadataCache");
} catch (Exception e) {
throw new IllegalStateException("Unable to clear InitDestroyAnnotationBeanPostProcessor.lifecycleMetadataCache", e);
}
}