Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve target bean type detection for FactoryBeans [SPR-13986] #18558

Open
spring-projects-issues opened this issue Feb 26, 2016 · 0 comments
Open
Labels
in: core Issues in core modules (aop, beans, core, context, expression) type: enhancement A general enhancement
Milestone

Comments

@spring-projects-issues
Copy link
Collaborator

spring-projects-issues commented Feb 26, 2016

Oliver Drotbohm opened SPR-13986 and commented

There are a couple of FactoryBean implementations that produce proxy instances and the the type of the proxy to be created configured. Examples of that are the FactoryBean implementations for remoting proxies, the JndiObjectFactoryBean and RepositoryFactoryBeanSupport in Spring Data.

Factories that are build that way cannot be detected by target type until they're initialized which can be a problem if the BeanDefinition instances for them are supposed to be found e.g. in a BeanFactoryPostProcessor.

Spring Data currently deploys a InstantiationAwareBeanPostProcessor to predict the bean type based on the BeanDefinition setup, interpreting a certain property value as the type which that bean definition will eventually end up in. However, the lookup issue also pops up in the context of collecting BeanDefinition instances for EntityManager (in the course of some code to allow constructor injection of them) in case the EntityManager is provided by a JndiObjectFactoryBean.

While I can of course extract the relevant code in Spring Data and also provide a prediction mechanism for the JndiObjectFactoryBean it doesn't feel very natural to place that setup in Spring Data itself as it shouldn't really care about JNDI.

So it would be cool if there was a general prediction mechanism deployed that uses an annotation on one of the FactoryBean's setters to identify the property as target type property and use that predicted type.


Issue Links:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
in: core Issues in core modules (aop, beans, core, context, expression) type: enhancement A general enhancement
Projects
None yet
Development

No branches or pull requests

1 participant