Browse Source
All existing *Aware interfaces have been refactored to extend this new marker interface, serving two purposes: * Easy access to a type hierarchy that can answer the question "What *Aware interfaces are available?", without requiring text-based searches. Also clearly excludes false positives like TargetClassAware and ParamAware, which while similarly named, are not semantically similar to traditional *Aware interfaces in Spring. * Minor potential performance improvements in AbstractAutowireCapableBeanFactory and ApplicationContextAwareProcessor. Both have blocks of sequential instanceof checks in order to invoke any *Aware interface callback methods. For a bean that implements none of these interfaces, the whole sequence can be avoided by guarding first with if (bean instanceof Aware) { ... } Implementors of custom *Aware-style interfaces (and presumably the BeanPostProcessors that handle them), are encouraged to refactor to extending this interface for consistency with the framework as well as the points above.pull/7/head
21 changed files with 144 additions and 62 deletions
@ -0,0 +1,39 @@
@@ -0,0 +1,39 @@
|
||||
/* |
||||
* Copyright 2002-2011 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; |
||||
|
||||
/** |
||||
* Marker superinterface indicating that a bean is eligible to be |
||||
* notified by the Spring container of a particular framework object |
||||
* through a callback-style method. Actual method signature is |
||||
* determined by individual subinterfaces, but should typically |
||||
* consist of just one void-returning method that accepts a single |
||||
* argument. |
||||
* |
||||
* <p>Note that merely implementing {@link Aware} provides no default |
||||
* functionality. Rather, processing must be done explicitly, for example |
||||
* in a {@link org.springframework.beans.factory.config.BeanPostProcessor BeanPostProcessor}. |
||||
* Refer to {@link org.springframework.context.support.ApplicationContextAwareProcessor} |
||||
* and {@link org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory} |
||||
* for examples of processing {@code *Aware} interface callbacks. |
||||
* |
||||
* @author Chris Beams |
||||
* @since 3.1 |
||||
*/ |
||||
public interface Aware { |
||||
|
||||
} |
Loading…
Reference in new issue