Java 如何访问Springbean名称?

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的名称之间留下任何关系 您可能想签出,具体取

当我像这样注入DashboardDAO时,如何访问@Named标记内的字符串:

@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;
     } 

}