Details
-
Improvement
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
5.1.0.0, 5.0.18
-
None
Description
Sometimes a component doesn't know which instance of a common interface is going to be used at design time; the appropriate instance of a common interface will be injected at runtime. For example, a JDBCTable component is using a DataSource:
public class JDBCTable {
@Inject
private DataSource dataSource;
@Parameter(required = true, defaultPrefix = "literal")
private String table;
....
}
When there are multiple DataSource existing, it seems hard to inject a DataSource I wanted into this component, a possible way is to make dataSource a parameter.
It would be nice that Tapestry 5 can remove this kind of ambiguities of injection by attaching an annotation marker(s) with @Component, as
@Oracle
@Component
private JDBCTable jdbcTable;
The @Oracle should has higher priority than the one(s) already defined in the component.