Save This Page
Home » Spring-Framework-090522 » org.springframework » beans » factory » config » [javadoc | source]
    1   /*
    2    * Copyright 2002-2007 the original author or authors.
    3    *
    4    * Licensed under the Apache License, Version 2.0 (the "License");
    5    * you may not use this file except in compliance with the License.
    6    * You may obtain a copy of the License at
    7    *
    8    *      http://www.apache.org/licenses/LICENSE-2.0
    9    *
   10    * Unless required by applicable law or agreed to in writing, software
   11    * distributed under the License is distributed on an "AS IS" BASIS,
   12    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   13    * See the License for the specific language governing permissions and
   14    * limitations under the License.
   15    */
   16   
   17   package org.springframework.beans.factory.config;
   18   
   19   import org.springframework.beans.BeansException;
   20   
   21   /**
   22    * Factory hook that allows for custom modification of new bean instances,
   23    * e.g. checking for marker interfaces or wrapping them with proxies.
   24    *
   25    * <p>ApplicationContexts can autodetect BeanPostProcessor beans in their
   26    * bean definitions and apply them to any beans subsequently created.
   27    * Plain bean factories allow for programmatic registration of post-processors,
   28    * applying to all beans created through this factory.
   29    *
   30    * <p>Typically, post-processors that populate beans via marker interfaces
   31    * or the like will implement {@link #postProcessBeforeInitialization},
   32    * while post-processors that wrap beans with proxies will normally
   33    * implement {@link #postProcessAfterInitialization}.
   34    *
   35    * @author Juergen Hoeller
   36    * @since 10.10.2003
   37    * @see InstantiationAwareBeanPostProcessor
   38    * @see DestructionAwareBeanPostProcessor
   39    * @see ConfigurableBeanFactory#addBeanPostProcessor
   40    * @see BeanFactoryPostProcessor
   41    */
   42   public interface BeanPostProcessor {
   43   
   44   	/**
   45   	 * Apply this BeanPostProcessor to the given new bean instance <i>before</i> any bean
   46   	 * initialization callbacks (like InitializingBean's <code>afterPropertiesSet</code>
   47   	 * or a custom init-method). The bean will already be populated with property values.
   48   	 * The returned bean instance may be a wrapper around the original.
   49   	 * @param bean the new bean instance
   50   	 * @param beanName the name of the bean
   51   	 * @return the bean instance to use, either the original or a wrapped one
   52   	 * @throws org.springframework.beans.BeansException in case of errors
   53   	 * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet
   54   	 */
   55   	Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException;
   56   
   57   	/**
   58   	 * Apply this BeanPostProcessor to the given new bean instance <i>after</i> any bean
   59   	 * initialization callbacks (like InitializingBean's <code>afterPropertiesSet</code>
   60   	 * or a custom init-method). The bean will already be populated with property values.
   61   	 * The returned bean instance may be a wrapper around the original.
   62   	 * <p>In case of a FactoryBean, this callback will be invoked for both the FactoryBean
   63   	 * instance and the objects created by the FactoryBean (as of Spring 2.0). The
   64   	 * post-processor can decide whether to apply to either the FactoryBean or created
   65   	 * objects or both through corresponding <code>bean instanceof FactoryBean</code> checks.
   66   	 * <p>This callback will also be invoked after a short-circuiting triggered by a
   67   	 * {@link InstantiationAwareBeanPostProcessor#postProcessBeforeInstantiation} method,
   68   	 * in contrast to all other BeanPostProcessor callbacks.
   69   	 * @param bean the new bean instance
   70   	 * @param beanName the name of the bean
   71   	 * @return the bean instance to use, either the original or a wrapped one
   72   	 * @throws org.springframework.beans.BeansException in case of errors
   73   	 * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet
   74   	 * @see org.springframework.beans.factory.FactoryBean
   75   	 */
   76   	Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException;
   77   
   78   }

Save This Page
Home » Spring-Framework-090522 » org.springframework » beans » factory » config » [javadoc | source]