mirror of
https://github.com/spring-projects/spring-boot.git
synced 2024-08-29 03:06:45 +08:00
Clarify default value of ConditionalOnMissingBean
on bean methods
Closes gh-9387
This commit is contained in:
parent
b9a09fcd64
commit
c736a1698b
@ -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
|
||||
|
@ -6231,6 +6231,24 @@ 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
|
||||
|
Loading…
Reference in New Issue
Block a user