java - 如何访问 Spring Bean 名称?

标签 java spring dependency-injection

@Named("myUniqueName") 
public class ReportDashboardDao implements DashboardDAO{ 
//STUFF 
}

当我像这样注入(inject) DashboardDAO 时,如何访问 @Named 标记内的字符串:
@Named
public class DshboardDaoConsumer(){

@Inject List<DashboardDAO> dashboardDAO;
//STUFF
} 

最佳答案

通过实现 BeanNameAware .

@Named("myUniqueName") 
public class ReportDashboardDao implements DashboardDAO, BeanNameAware{ 
      //STUFF 

     private String beanName;

     @Override 
     public Void setBeanName(String beanName) {
        this.beanName = beanName;
     } 

}

这样 Spring 就可以将 beanName 注入(inject)到 bean 中。如果添加公共(public) String getBeanName();在您的 DashboardDAO接口(interface), DashboardDaoConsumer将能够获得它。

在这种特殊情况下,Spring 将注入(inject)您在注解中指定的名称。

关于java - 如何访问 Spring Bean 名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25301119/

相关文章:

java - 如何解释神秘的 Java 类文档

java - Spring WebClient toEntityList 不适用于 List<String>

java - HttpSession-s 之间共享的 Spring session bean

java - hadoop节点管理器被SIGSEGV杀死

java - 使用 Java API 的 BoolQuery 中的 NestedQuery

java - 如何准确获取数组中的元素?

java - 如何在 Spring MVC 中基于 Profile 动态加载 Application.properties 文件?

javascript - 注入(inject)服务未定义

c# - 使用 IClock 和 DI 时如何在实体中引用 DateTime.Now?

android - Dagger 2 静态注入(inject)