The question of how to inject a Spring bean by ID is a regular on the
mailing list . The documentation provides a reasonable explanation of how to
inject spring beans or the context (
http://tapestry.apache.org/integrating-with-spring-framework.html), e.g:

@Inject
private UserDAO userDAO;

This should find an implementation of the UserDAO and inject it into the
page/component. If there are multiple implementations of the same service,
there would be an error , and then the page author will have to do something
like:

@Inject
private ApplicationContext springContext;

public void someMethod() {
     UserDAO userDao = (UserDAO) springContext.getBean("userDaoId")

}

Thus, the question that pops into my head is : if there is just this one
extra line, how come Tapestry doesn't do it for me ? Maybe it wouldn't use
the same generic @Inject annotation, maybe it could use some extra
annotation or something to specify the ID (in the spring context) of the
spring bean to be injected, e.g. :

@Inject @SpringId("myUserDao")
private ApplicationContext springContext;


Cheers,

Alex K

Reply via email to