diff options
Diffstat (limited to 'spring-beans/src/main/java/org/springframework/beans/factory/ObjectProvider.java')
-rw-r--r-- | spring-beans/src/main/java/org/springframework/beans/factory/ObjectProvider.java | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/ObjectProvider.java b/spring-beans/src/main/java/org/springframework/beans/factory/ObjectProvider.java new file mode 100644 index 00000000..ffa2683e --- /dev/null +++ b/spring-beans/src/main/java/org/springframework/beans/factory/ObjectProvider.java @@ -0,0 +1,61 @@ +/* + * Copyright 2002-2016 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.beans.factory; + +import org.springframework.beans.BeansException; + +/** + * A variant of {@link ObjectFactory} designed specifically for injection points, + * allowing for programmatic optionality and lenient not-unique handling. + * + * @author Juergen Hoeller + * @since 4.3 + */ +public interface ObjectProvider<T> extends ObjectFactory<T> { + + /** + * Return an instance (possibly shared or independent) of the object + * managed by this factory. + * <p>Allows for specifying explicit construction arguments, along the + * lines of {@link BeanFactory#getBean(String, Object...)}. + * @param args arguments to use when creating a corresponding instance + * @return an instance of the bean + * @throws BeansException in case of creation errors + * @see #getObject() + */ + T getObject(Object... args) throws BeansException; + + /** + * Return an instance (possibly shared or independent) of the object + * managed by this factory. + * @return an instance of the bean, or {@code null} if not available + * @throws BeansException in case of creation errors + * @see #getObject() + */ + T getIfAvailable() throws BeansException; + + /** + * Return an instance (possibly shared or independent) of the object + * managed by this factory. + * @return an instance of the bean, or {@code null} if not available or + * not unique (i.e. multiple candidates found with none marked as primary) + * @throws BeansException in case of creation errors + * @see #getObject() + */ + T getIfUnique() throws BeansException; + +} |