如何访问 Spring Bean 名称?

Moi*_*nGK 4 java spring dependency-injection

@Named("myUniqueName") 
public class ReportDashboardDao implements DashboardDAO{ 
//STUFF 
}
Run Code Online (Sandbox Code Playgroud)

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

@Named
public class DshboardDaoConsumer(){

@Inject List<DashboardDAO> dashboardDAO;
//STUFF
} 
Run Code Online (Sandbox Code Playgroud)

Sot*_*lis 7

你不能。您正在按类型注入。注入完成后,Spring 不会留下 Bean 的对象和 Bean 名称之间的任何关系。

ApplicationContext#getBeanNamesByType()您可能需要根据自己想要做什么来查看。


Jos*_*tin 6

改用地图

@Inject 
Map<String, DashboardDao> dashBoardDaos;
Run Code Online (Sandbox Code Playgroud)

这将注入Mapbean 名称作为键和 daos 作为值。

当然,您也可以从类实例中读取注解值。