@Named("myUniqueName")
public class ReportDashboardDao implements DashboardDAO{
//STUFF
}
当我像这样注入DashboardDAO时,如何访问@Named标签内的字符串:
@Named
public class DshboardDaoConsumer(){
@Inject List<DashboardDAO> dashboardDAO;
//STUFF
}
答案 0 :(得分:4)
使用地图
@Inject
Map<String, DashboardDao> dashBoardDaos;
这将注入Map
,其中bean名称为键,daos为值。
当然,您也可以从类实例中读取注释值。
答案 1 :(得分:2)
你做不到。你是按类型注射的。注入完成后,Spring不会留下bean的对象和bean名称之间的任何关系。
您可能需要查看ApplicationContext#getBeanNamesByType()
,具体取决于您要执行的操作。
答案 2 :(得分:1)
@Named("myUniqueName")
public class ReportDashboardDao implements DashboardDAO, BeanNameAware{
//STUFF
private String beanName;
@Override
public Void setBeanName(String beanName) {
this.beanName = beanName;
}
}
这样Spring就可以将beanName注入bean中。如果您在String getBeanName();
界面中添加公开DashboardDAO
,则DashboardDaoConsumer
将能够获取该公开{{1}}。
在这种特殊情况下,Spring将注入您在注释中指定的名称。