001: /*
002: * Copyright 2002-2006 the original author or authors.
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016:
017: package org.springframework.beans.factory.support;
018:
019: import org.springframework.beans.factory.BeanDefinitionStoreException;
020: import org.springframework.core.io.Resource;
021: import org.springframework.core.io.ResourceLoader;
022:
023: /**
024: * Simple interface for bean definition readers.
025: * Specifies load methods with Resource parameters.
026: *
027: * <p>Concrete bean definition readers can of course add additional
028: * load and register methods for bean definitions, specific to
029: * their bean definition format.
030: *
031: * <p>Note that a bean definition reader does not have to implement
032: * this interface. It only serves as suggestion for bean definition
033: * readers that want to follow standard naming conventions.
034: *
035: * @author Juergen Hoeller
036: * @since 1.1
037: * @see org.springframework.core.io.Resource
038: */
039: public interface BeanDefinitionReader {
040:
041: /**
042: * Return the bean factory to register the bean definitions with.
043: * <p>The factory is exposed through the BeanDefinitionRegistry interface,
044: * encapsulating the methods that are relevant for bean definition handling.
045: */
046: BeanDefinitionRegistry getBeanFactory();
047:
048: /**
049: * Return the resource loader to use for resource locations.
050: * Can be checked for the <b>ResourcePatternResolver</b> interface and cast
051: * accordingly, for loading multiple resources for a given resource pattern.
052: * <p>Null suggests that absolute resource loading is not available
053: * for this bean definition reader.
054: * <p>This is mainly meant to be used for importing further resources
055: * from within a bean definition resource, for example via the "import"
056: * tag in XML bean definitions. It is recommended, however, to apply
057: * such imports relative to the defining resource; only explicit full
058: * resource locations will trigger absolute resource loading.
059: * <p>There is also a <code>loadBeanDefinitions(String)</code> method available,
060: * for loading bean definitions from a resource location (or location pattern).
061: * This is a convenience to avoid explicit ResourceLoader handling.
062: * @see #loadBeanDefinitions(String)
063: * @see org.springframework.core.io.support.ResourcePatternResolver
064: */
065: ResourceLoader getResourceLoader();
066:
067: /**
068: * Return the class loader to use for bean classes.
069: * <p><code>null</code> suggests to not load bean classes eagerly
070: * but rather to just register bean definitions with class names,
071: * with the corresponding Classes to be resolved later (or never).
072: */
073: ClassLoader getBeanClassLoader();
074:
075: /**
076: * Load bean definitions from the specified resource.
077: * @param resource the resource descriptor
078: * @return the number of bean definitions found
079: * @throws BeanDefinitionStoreException in case of loading or parsing errors
080: */
081: int loadBeanDefinitions(Resource resource)
082: throws BeanDefinitionStoreException;
083:
084: /**
085: * Load bean definitions from the specified resources.
086: * @param resources the resource descriptors
087: * @return the number of bean definitions found
088: * @throws BeanDefinitionStoreException in case of loading or parsing errors
089: */
090: int loadBeanDefinitions(Resource[] resources)
091: throws BeanDefinitionStoreException;
092:
093: /**
094: * Load bean definitions from the specified resource location.
095: * <p>The location can also be a location pattern, provided that the
096: * ResourceLoader of this bean definition reader is a ResourcePatternResolver.
097: * @param location the resource location, to be loaded with the ResourceLoader
098: * (or ResourcePatternResolver) of this bean definition reader
099: * @return the number of bean definitions found
100: * @throws BeanDefinitionStoreException in case of loading or parsing errors
101: * @see #getResourceLoader()
102: * @see #loadBeanDefinitions(org.springframework.core.io.Resource)
103: * @see #loadBeanDefinitions(org.springframework.core.io.Resource[])
104: */
105: int loadBeanDefinitions(String location)
106: throws BeanDefinitionStoreException;
107:
108: /**
109: * Load bean definitions from the specified resource locations.
110: * @param locations the resource locations, to be loaded with the ResourceLoader
111: * (or ResourcePatternResolver) of this bean definition reader
112: * @return the number of bean definitions found
113: * @throws BeanDefinitionStoreException in case of loading or parsing errors
114: */
115: int loadBeanDefinitions(String[] locations)
116: throws BeanDefinitionStoreException;
117:
118: }
|