Java 如何访问Springbean名称?
当我像这样注入DashboardDAO时,如何访问@Named标记内的字符串:Java 如何访问Springbean名称?,java,spring,dependency-injection,Java,Spring,Dependency Injection,当我像这样注入DashboardDAO时,如何访问@Named标记内的字符串: @Named("myUniqueName") public class ReportDashboardDao implements DashboardDAO{ //STUFF } @Named 公共类DshboardDaoConsumer(){ @注入列表仪表板dao; //东西 } 你不能。你是按类型注射的。注入完成后,Spring不会在bean的对象和bean的名称之间留下任何关系 您可能想签出,具体取
@Named("myUniqueName")
public class ReportDashboardDao implements DashboardDAO{
//STUFF
}
@Named
公共类DshboardDaoConsumer(){
@注入列表仪表板dao;
//东西
}
你不能。你是按类型注射的。注入完成后,Spring不会在bean的对象和bean的名称之间留下任何关系
您可能想签出,具体取决于您想做什么。请使用地图
@Named
public class DshboardDaoConsumer(){
@Inject List<DashboardDAO> dashboardDAO;
//STUFF
}
@Inject
地图仪表盘DAOS;
这将注入一个Map
,bean名称作为键,dao作为值
当然,您也可以通过实现从类实例中读取注释值。
这样春天就可以把豆名注入豆中。如果添加公共字符串getBeanName()
在您的仪表板dao
界面中,仪表板dao消费者将能够获取它
在这种情况下,Spring将注入您在注释中指定的名称。谢谢。BeanNameWare界面怎么样?或者完全不同?是的,您可以使用BeanNameware
并实现setBeanName()
,然后提供getBeanName
来访问名称,但@SotiriosDelimanolis的意思是您无法访问@Named
注释中提供的值。谢谢您的回复,但事实并非如此。我不知道为什么人们会否决这个答案,但最好解释一下原因。我也被否决了,但我不知道为什么
@Inject
Map<String, DashboardDao> dashBoardDaos;
@Named("myUniqueName")
public class ReportDashboardDao implements DashboardDAO, BeanNameAware{
//STUFF
private String beanName;
@Override
public Void setBeanName(String beanName) {
this.beanName = beanName;
}
}