Skip to content

Provide programmatic access to inner beans [SPR-8068] #12723

Closed
@spring-projects-issues

Description

@spring-projects-issues
Collaborator

Liu, Yinwei David opened SPR-8068 and commented

Is it possible to add a new API to allow user access inner bean in the context?

According to the javadoc of ApplicationContext.getBeansOfType(Class type), it won't return the nested beans, This method introspects top-level beans only. It does not check nested beans which might match the specified type as well.
Could you please let me know how we get nested bean from ApplicationContext?

e.g. we cannot get the bean b1 from application context by calling getBeansOfType.

<bean id="a1" class="class.A">
    <property name="b">
     <bean name="b1" class="class.B"/>
</property>
</bean> 

Affects: 3.0.5

Issue Links:

1 votes, 3 watchers

Activity

spring-projects-issues

spring-projects-issues commented on Mar 23, 2011

@spring-projects-issues
CollaboratorAuthor

Chris Beams commented

This is really by design. Typically when folks have wanted externalized access to nested beans, we tell them that's when they should declare it as top-level. Is there a reason this cannot work for you?

spring-projects-issues

spring-projects-issues commented on Mar 23, 2011

@spring-projects-issues
CollaboratorAuthor

Liu, Yinwei David commented

Hi Chris,
Thanks for your reply.
Normally, it will work. However, if we have an imported config by using import tag (it might be from 3rd library), and then we will not be able to get those nested beans in the imported config.

David

spring-projects-issues

spring-projects-issues commented on Mar 23, 2011

@spring-projects-issues
CollaboratorAuthor

Chris Beams commented

OK - as a use case it's probably comparatively rare. Given the impact that such a change would have, I'm hesitant to implement it. We can leave this issue open in a 'Waiting for Feedback' state just to see if additional votes and use cases show up.

spring-projects-issues

spring-projects-issues commented on Mar 23, 2011

@spring-projects-issues
CollaboratorAuthor

Liu, Yinwei David commented

I think people still can get the inner bean by using BeanPostProcessor. So, the new API should be a convenience to developers to get those inner beans when we need to know those inner beans.

spring-projects-issues

spring-projects-issues commented on Apr 1, 2011

@spring-projects-issues
CollaboratorAuthor

Chris Beams commented

Hi David,

I'm slating this for further review in 3.2 when we'll be taking care of a number of similar issues. In the meantime, I would suggest redefinition of the entire 3rd party bean definition locally in order to override it. At this point, you fully control the inner bean definition or can choose to make it top-level.

added
in: coreIssues in core modules (aop, beans, core, context, expression)
and removed on Jan 11, 2019
added
status: bulk-closedAn outdated, unresolved issue that's closed in bulk as part of a cleaning process
and removed on Jan 11, 2019
spring-projects-issues

spring-projects-issues commented on Jan 12, 2019

@spring-projects-issues
CollaboratorAuthor

Bulk closing outdated, unresolved issues. Please, reopen if still relevant.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    in: coreIssues in core modules (aop, beans, core, context, expression)status: bulk-closedAn outdated, unresolved issue that's closed in bulk as part of a cleaning process

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @rstoyanchev@spring-projects-issues

        Issue actions

          Provide programmatic access to inner beans [SPR-8068] · Issue #12723 · spring-projects/spring-framework