-
Notifications
You must be signed in to change notification settings - Fork 38.9k
Closed as not planned
Closed as not planned
Copy link
Labels
in: coreIssues in core modules (aop, beans, core, context, expression)Issues in core modules (aop, beans, core, context, expression)type: enhancementA general enhancementA general enhancement
Description
Phil Webb opened SPR-15197 and commented
The current registerBean methods added to support functional registration take a beanType class.
Lines 357 to 416 in cb0d992
| //--------------------------------------------------------------------- | |
| // Convenient methods for registering individual beans | |
| //--------------------------------------------------------------------- | |
| /** | |
| * Register a bean from the given bean class, optionally customizing its | |
| * bean definition metadata (typically declared as a lambda expression | |
| * or method reference). | |
| * @param beanClass the class of the bean | |
| * @param customizers one or more callbacks for customizing the | |
| * factory's {@link BeanDefinition}, e.g. setting a lazy-init or primary flag | |
| * @since 5.0 | |
| */ | |
| public <T> void registerBean(Class<T> beanClass, BeanDefinitionCustomizer... customizers) { | |
| registerBean(null, beanClass, null, customizers); | |
| } | |
| /** | |
| * Register a bean from the given bean class, using the given supplier for | |
| * obtaining a new instance (typically declared as a lambda expression or | |
| * method reference), optionally customizing its bean definition metadata | |
| * (again typically declared as a lambda expression or method reference). | |
| * @param beanName the name of the bean (may be {@code null}) | |
| * @param beanClass the class of the bean | |
| * @param customizers one or more callbacks for customizing the | |
| * factory's {@link BeanDefinition}, e.g. setting a lazy-init or primary flag | |
| * @since 5.0 | |
| */ | |
| public <T> void registerBean(String beanName, Class<T> beanClass, BeanDefinitionCustomizer... customizers) { | |
| registerBean(beanName, beanClass, null, customizers); | |
| } | |
| /** | |
| * Register a bean from the given bean class, using the given supplier for | |
| * obtaining a new instance (typically declared as a lambda expression or | |
| * method reference), optionally customizing its bean definition metadata | |
| * (again typically declared as a lambda expression or method reference). | |
| * @param beanClass the class of the bean | |
| * @param supplier a callback for creating an instance of the bean | |
| * @param customizers one or more callbacks for customizing the | |
| * factory's {@link BeanDefinition}, e.g. setting a lazy-init or primary flag | |
| * @since 5.0 | |
| */ | |
| public <T> void registerBean(Class<T> beanClass, Supplier<T> supplier, BeanDefinitionCustomizer... customizers) { | |
| registerBean(null, beanClass, supplier, customizers); | |
| } | |
| /** | |
| * Register a bean from the given bean class, using the given supplier for | |
| * obtaining a new instance (typically declared as a lambda expression or | |
| * method reference), optionally customizing its bean definition metadata | |
| * (again typically declared as a lambda expression or method reference). | |
| * @param beanName the name of the bean (may be {@code null}) | |
| * @param beanClass the class of the bean | |
| * @param supplier a callback for creating an instance of the bean | |
| * @param customizers one or more callbacks for customizing the | |
| * factory's {@link BeanDefinition}, e.g. setting a lazy-init or primary flag | |
| * @since 5.0 | |
| */ | |
| public <T> void registerBean(String beanName, Class<T> beanClass, Supplier<T> supplier, |
I have a feeling that we may need to register beans that include generics. e.g.
Repository<Foo> fooRepository = SomeThing.makeSomeFoo();
context.registerBean(..., fooRepository, ...);Perhaps we should also offer registerBean variants that take a ResolvableType.
Affects: 5.0 M4
Issue Links:
- Programmatic bean registration with configuration classes #18353 Programmatic bean registration within configuration classes
- Add a functional way to register a bean [SPR-14832] #19398 Add a functional way to register a bean
- Allow programmatic registration of bean definitions with a ResolvableType [SPR-14580] #19149 Allow programmatic registration of bean definitions with a ResolvableType
- getBeanNamesForType(ResolvableType) doesn't match generic factory method return type for yet-to-be-created bean [SPR-15011] #19578 getBeanNamesForType(ResolvableType) doesn't match generic factory method return type for yet-to-be-created bean
- Publicly expose ResolvableType in RootBeanDefinition [SPR-17028] #21566 Publicly expose ResolvableType in RootBeanDefinition
0 votes, 5 watchers
Metadata
Metadata
Assignees
Labels
in: coreIssues in core modules (aop, beans, core, context, expression)Issues in core modules (aop, beans, core, context, expression)type: enhancementA general enhancementA general enhancement