Merge branch '1.5.x'
This commit is contained in:
commit
5e5b7e20ff
|
|
@ -30,6 +30,23 @@ import org.springframework.context.annotation.Conditional;
|
|||
/**
|
||||
* {@link Conditional} that only matches when the specified bean classes and/or names are
|
||||
* already contained in the {@link BeanFactory}.
|
||||
* When placed on a {@code @Bean} method, the bean class default to the return type of
|
||||
* the factory method:
|
||||
*
|
||||
* <pre class="code">
|
||||
* @Configuration
|
||||
* public class MyAutoConfiguration {
|
||||
*
|
||||
* @ConditionalOnBean
|
||||
* @Bean
|
||||
* public MyService myService() {
|
||||
* ...
|
||||
* }
|
||||
*
|
||||
* }</pre>
|
||||
* <p>
|
||||
* In the sample above the condition will match if a bean of type {@code MyService} is
|
||||
* already contained in the {@link BeanFactory}.
|
||||
* <p>
|
||||
* The condition can only match the bean definitions that have been processed by the
|
||||
* application context so far and, as such, it is strongly recommended to use this
|
||||
|
|
|
|||
|
|
@ -31,6 +31,24 @@ import org.springframework.context.annotation.Conditional;
|
|||
* {@link Conditional} that only matches when the specified bean classes and/or names are
|
||||
* not already contained in the {@link BeanFactory}.
|
||||
* <p>
|
||||
* When placed on a {@code @Bean} method, the bean class default to the return type of
|
||||
* the factory method:
|
||||
*
|
||||
* <pre class="code">
|
||||
* @Configuration
|
||||
* public class MyAutoConfiguration {
|
||||
*
|
||||
* @ConditionalOnMissingBean
|
||||
* @Bean
|
||||
* public MyService myService() {
|
||||
* ...
|
||||
* }
|
||||
*
|
||||
* }</pre>
|
||||
* <p>
|
||||
* In the sample above the condition will match if no bean of type {@code MyService} is
|
||||
* already contained in the {@link BeanFactory}.
|
||||
* <p>
|
||||
* The condition can only match the bean definitions that have been processed by the
|
||||
* application context so far and, as such, it is strongly recommended to use this
|
||||
* condition on auto-configuration classes only. If a candidate bean may be created by
|
||||
|
|
|
|||
|
|
@ -6417,10 +6417,28 @@ attribute to specify beans by type, or `name` to specify beans by name. The `sea
|
|||
attribute allows you to limit the `ApplicationContext` hierarchy that should be considered
|
||||
when searching for beans.
|
||||
|
||||
When placed on a `@Bean` method, the target type defaults to the return type of the
|
||||
method, for instance:
|
||||
|
||||
[source,java,indent=0]
|
||||
----
|
||||
@Configuration
|
||||
public class MyAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public MyService myService() { ... }
|
||||
|
||||
}
|
||||
----
|
||||
|
||||
In the example above, the `myService` bean is going to be created if no bean of type
|
||||
`MyService` is already contained in the `ApplicationContext`.
|
||||
|
||||
TIP: You need to be very careful about the order that bean definitions are added as these
|
||||
conditions are evaluated based on what has been processed so far. For this reason,
|
||||
we recommend only using `@ConditionalOnBean` and `@ConditionalOnMissingBean` annotations
|
||||
on auto-configuration classes (since these are guaranteed to load after any user-define
|
||||
on auto-configuration classes (since these are guaranteed to load after any user-defined
|
||||
beans definitions have been added).
|
||||
|
||||
NOTE: `@ConditionalOnBean` and `@ConditionalOnMissingBean` do not prevent `@Configuration`
|
||||
|
|
|
|||
Loading…
Reference in New Issue