@Override public void destroyScopedBean(String beanName) { RootBeanDefinition mbd = getMergedLocalBeanDefinition(beanName); if (mbd.isSingleton() || mbd.isPrototype()) { throw new IllegalArgumentException( "Bean name '" + beanName + "' does not correspond to an object in a mutable scope"); } String scopeName = mbd.getScope(); Scope scope = this.scopes.get(scopeName); if (scope == null) { throw new IllegalStateException("No Scope SPI registered for scope name '" + scopeName + "'"); } Object bean = scope.remove(beanName); if (bean != null) { destroyBean(beanName, bean, mbd); } }
@Override public void destroyScopedBean(String beanName) { RootBeanDefinition mbd = getMergedLocalBeanDefinition(beanName); if (mbd.isSingleton() || mbd.isPrototype()) { throw new IllegalArgumentException( "Bean name '" + beanName + "' does not correspond to an object in a mutable scope"); } String scopeName = mbd.getScope(); Scope scope = this.scopes.get(scopeName); if (scope == null) { throw new IllegalStateException("No Scope SPI registered for scope name '" + scopeName + "'"); } Object bean = scope.remove(beanName); if (bean != null) { destroyBean(beanName, bean, mbd); } }
assertSame(bean2a, context.getBean(DerivedTestBean.class)); assertNotSame(bean2, bean2a); context.getBeanFactory().getRegisteredScope("tx").remove("txScopedObject2"); assertFalse(TransactionSynchronizationManager.hasResource("txScopedObject2")); assertFalse(bean2a.wasDestroyed());
public void destroyScopedBean(String beanName) { RootBeanDefinition mbd = getMergedLocalBeanDefinition(beanName); if (mbd.isSingleton() || mbd.isPrototype()) { throw new IllegalArgumentException( "Bean name '" + beanName + "' does not correspond to an object in a mutable scope"); } String scopeName = mbd.getScope(); Scope scope = this.scopes.get(scopeName); if (scope == null) { throw new IllegalStateException("No Scope SPI registered for scope '" + scopeName + "'"); } Object bean = scope.remove(beanName); if (bean != null) { destroyBean(beanName, bean, mbd); } }
assertSame(bean2a, context.getBean(DerivedTestBean.class)); assertNotSame(bean2, bean2a); context.getBeanFactory().getRegisteredScope("tx").remove("txScopedObject2"); assertFalse(TransactionSynchronizationManager.hasResource("txScopedObject2")); assertFalse(bean2a.wasDestroyed());
/** @see org.springframework.web.context.request.SessionScope#remove(java.lang.String) */ @Override public Object remove(String name) { try { return this.delegateScope.remove(name); } catch (IllegalStateException ise) { final InstanceHolder instanceHolder; synchronized (this.instances) { instanceHolder = this.instances.remove(name); } if (instanceHolder != null) { if (this.logger.isInfoEnabled()) { this.logger.info("Removing singleton bean '" + name + "'"); } return instanceHolder.instance; } return null; } }
@Override public Object remove(final String name) { return getCurrectScope().remove(name); }
@Override public void destroyScopedBean(String beanName) { RootBeanDefinition mbd = getMergedLocalBeanDefinition(beanName); if (mbd.isSingleton() || mbd.isPrototype()) { throw new IllegalArgumentException( "Bean name '" + beanName + "' does not correspond to an object in a mutable scope"); } String scopeName = mbd.getScope(); Scope scope = this.scopes.get(scopeName); if (scope == null) { throw new IllegalStateException("No Scope SPI registered for scope name '" + scopeName + "'"); } Object bean = scope.remove(beanName); if (bean != null) { destroyBean(beanName, bean, mbd); } }