org.springframework.config.java.annotation
Annotation Type Bean


@Target(value=METHOD)
@Retention(value=RUNTIME)
public @interface Bean

Annotation to be applied to methods that create beans in a Spring context. The name of the bean is the method name. (It is also possible to specify aliases using the aliases array on this annotation.)

Contains similar information to that held in Spring's internal BeanDefinition metadata.

Bean creation methods must be public or protected. Bean creation methods may throw any exception, which will be caught and handled by the Spring container on processing of the configuration class.
Bean creation methods must return an object type. The decision to return a class or an interface will be significant in the event of proxying. Bean methods that return interfaces will be proxied using dynamic proxies; those that return a class will require CGLIB or other subclass-based proxying. Return an interface as possible, as this is also consistent with best practice around loose coupling.

Bean creation methods may reference other bean creation methods by calling them directly, as follows. This ensures that references between beans are strongly typed:

 @Bean
 public Company interface21() {
    Company company = new DefaultCompany("Interface21");
    company.setChiefScientist(adrian());
    return company;
 }
 
 @Bean
 public Person adrian() {
    return new Person("Adrian Colyer");
 }
 

If a bean creation method is protected, rather than public, the the bean will be hidden. This means that the bean will be added to a child factory used internally by the ConfigurationProcessor, rather than the main factory, meaning it won't be visible to other definitions. This is particularly useful for Spring AOP Advisors or AspectJ aspects, which might otherwise alter behaviour of the owning factory as a whole.

Author:
Rod Johnson, Costin Leau
See Also:
Configuration

Optional Element Summary
 java.lang.String[] aliases
          Bean aliases.
 boolean allowOverriding
          Allow the bean to be overridden in XML or other non-Java configuration
 org.springframework.beans.factory.annotation.Autowire autowire
          Bean autowire strategy.
 DependencyCheck dependencyCheck
          Bean dependency check strategy.
 java.lang.String[] dependsOn
          Beans on which the current bean depends on.
 java.lang.String destroyMethodName
          Bean destroy method name.
 java.lang.String initMethodName
          Bean init method name.
 Lazy lazy
          Bean lazy strategy.
 Meta[] meta
          Metadata for the current bean.
 java.lang.String scope
          Scope: whether the bean is a singleton, prototype or custom scope.
 

aliases

public abstract java.lang.String[] aliases
Bean aliases.

Default:
{}

scope

public abstract java.lang.String scope
Scope: whether the bean is a singleton, prototype or custom scope. Default is singleton.

Default:
"singleton"

autowire

public abstract org.springframework.beans.factory.annotation.Autowire autowire
Bean autowire strategy.

Default:
INHERITED

lazy

public abstract Lazy lazy
Bean lazy strategy.

Default:
UNSPECIFIED

initMethodName

public abstract java.lang.String initMethodName
Bean init method name. Normally this is not needed, as the initialization (with parameterization) can be done directly through java code.

Default:
""

destroyMethodName

public abstract java.lang.String destroyMethodName
Bean destroy method name.

Default:
""

dependencyCheck

public abstract DependencyCheck dependencyCheck
Bean dependency check strategy.

Default:
UNSPECIFIED

dependsOn

public abstract java.lang.String[] dependsOn
Beans on which the current bean depends on.

Default:
{}

meta

public abstract Meta[] meta
Metadata for the current bean.

Default:
{}

allowOverriding

public abstract boolean allowOverriding
Allow the bean to be overridden in XML or other non-Java configuration

Returns:
whether overriding of this bean is allowed
Default:
false


Copyright © 2005-2007 Spring Framework. All Rights Reserved.