Caleb Cushing opened SPR-14665 and commented
so let's say I have two WebSecurityConfig
classes which extend WebSecurityConfigurerAdapter
. You will get a conflict like this
nested exception is org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'webSecurityConfig' for bean class [com.xenoterracide.rpf.security.config.WebSecurityConfig] conflicts with existing, non-compatible bean definition of same name and class [com.xenoterracide.rpf.config.WebSecurityConfig]
this of course would be even worse if they were in jars you didn't control the source for (not that I've ever encountered that).
It occurs to me that I never need to use name injection for these. Perhaps spring could auto name them including the package name... or some other unique method (or perhaps do away with the name requirement?). Basically the idea is if you want a user friendly name to inject that you can still specify one.
This probably does break backwards compatibility so maybe it could be part of 5 if possible.
Issue Links: - #15434 Reconsider whether to generally allow bean overriding by name
Comment From: spring-projects-issues
Juergen Hoeller commented
While bean names may not matter during such a component scan, they may matter for explicit overrides later on. During a component scan, such overlapping names may indicate an intended override arrangement that we do not accept during an (unordered) scan. The same arrangement may work fine with explicit (ordered) definitions, so it seems unintuitive to silently register them side by side (with automatically adapted bean names) during a scan. You do have a point that such an arrangement could be accepted in general; I just wonder whether it is a natural outcome in the default Spring bean definition model.
You could of course specify a custom BeanNameGenerator
for your scan and use more unique bean names, e.g. the fully-qualified class name.
In any case, we're not going to get to any fundamental changes for 5.0 anymore. I'll put it into the backlog for further consideration (and further cases made by other stakeholders).
Comment From: spring-projects-issues
Caleb Cushing commented
ok, thanks for looking into it, and the explanation.
Comment From: jhoeller
With the option of resolving this through an explicitly configured BeanNameGenerator
, we do not intend to auto-resolve such scenarios.