KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > springframework > beans > factory > config > BeanPostProcessor


1 /*
2  * Copyright 2002-2006 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  * Allows for custom modification of new bean instances, e.g.
23  * checking for marker interfaces or wrapping them with proxies.
24  *
25  * <p>Application contexts can auto-detect BeanPostProcessor beans in their
26  * bean definitions and apply them before any other beans get created.
27  * Plain bean factories allow for programmatic registration of post-processors.
28  *
29  * <p>Typically, post-processors that populate beans via marker interfaces
30  * or the like will implement postProcessBeforeInitialization, and post-processors
31  * that wrap beans with proxies will normally implement postProcessAfterInitialization.
32  *
33  * @author Juergen Hoeller
34  * @since 10.10.2003
35  * @see InstantiationAwareBeanPostProcessor
36  * @see DestructionAwareBeanPostProcessor
37  * @see ConfigurableBeanFactory#addBeanPostProcessor
38  * @see BeanFactoryPostProcessor
39  */

40 public interface BeanPostProcessor {
41
42     /**
43      * Apply this BeanPostProcessor to the given new bean instance <i>before</i> any bean
44      * initialization callbacks (like InitializingBean's <code>afterPropertiesSet</code>
45      * or a custom init-method). The bean will already be populated with property values.
46      * The returned bean instance may be a wrapper around the original.
47      * @param bean the new bean instance
48      * @param beanName the name of the bean
49      * @return the bean instance to use, either the original or a wrapped one
50      * @throws org.springframework.beans.BeansException in case of errors
51      * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet
52      */

53     Object JavaDoc postProcessBeforeInitialization(Object JavaDoc bean, String JavaDoc beanName) throws BeansException;
54
55     /**
56      * Apply this BeanPostProcessor to the given new bean instance <i>after</i> any bean
57      * initialization callbacks (like InitializingBean's <code>afterPropertiesSet</code>
58      * or a custom init-method). The bean will already be populated with property values.
59      * The returned bean instance may be a wrapper around the original.
60      * <p>In case of a FactoryBean, this callback will be invoked for both the FactoryBean
61      * instance and the objects created by the FactoryBean (as of Spring 2.0). The
62      * post-processor can decide whether to apply to either the FactoryBean or created
63      * objects or both through corresponding <code>bean instanceof FactoryBean</code> checks.
64      * <p>This callback will also be invoked after a short-circuiting triggered by a
65      * {@link InstantiationAwareBeanPostProcessor#postProcessBeforeInstantiation} method,
66      * in contrast to all other BeanPostProcessor callbacks.
67      * @param bean the new bean instance
68      * @param beanName the name of the bean
69      * @return the bean instance to use, either the original or a wrapped one
70      * @throws org.springframework.beans.BeansException in case of errors
71      * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet
72      * @see org.springframework.beans.factory.FactoryBean
73      */

74     Object JavaDoc postProcessAfterInitialization(Object JavaDoc bean, String JavaDoc beanName) throws BeansException;
75
76 }
77
Popular Tags