Object scopedInstance = scope.get(beanName, () -> { beforePrototypeCreation(beanName); try {
Object scopedInstance = scope.get(beanName, () -> { beforePrototypeCreation(beanName); try {
Object scopedInstance = scope.get(beanName, new ObjectFactory<Object>() { public Object getObject() throws BeansException { beforePrototypeCreation(beanName);
@Override public Object get(final String name, final ObjectFactory<?> objectFactory) { final Scope currectScope = getCurrectScope(); if (currectScope == null) { logger.warn("Using bean {} without scope in stateful service. Assuming stateless call."); return objectFactory.getObject(); } return currectScope.get(name, objectFactory); }
/** * @see org.springframework.web.context.request.SessionScope#get(java.lang.String, * org.springframework.beans.factory.ObjectFactory) */ @Override public Object get(String name, ObjectFactory<?> objectFactory) { try { return this.delegateScope.get(name, objectFactory); } catch (IllegalStateException ise) { synchronized (this.instances) { InstanceHolder instanceHolder = this.instances.get(name); if (instanceHolder == null) { if (this.logger.isDebugEnabled()) { this.logger.debug("Creating singleton instance for bean '" + name + "'"); } // Add to instances map before creating to ensure if a destruction callback is // added it is caught instanceHolder = new InstanceHolder(name); this.instances.put(name, instanceHolder); instanceHolder.instance = objectFactory.getObject(); } else if (this.logger.isDebugEnabled()) { this.logger.debug("Using existing singleton instance for bean '" + name + "'"); } return instanceHolder.instance; } } }