该方法有两种类型的重载:
getBeansOfType(Class),获取某一类的所有的bean。
getBeansOfType(Class,boolean,boolean),后面两个布尔值,第一代表是否也包含原型(Class祖先)bean或者或者只是singletons(包含FactoryBean生成的),
第二个表示是否立即实例化懒加载或者由FactoryBean生成的Bean以保证依赖关系。
Map<String, Interface> result = SpringBeanUtil.getApplicationContext().getBeansOfType(Interface.class);
key位 bean name,value为实例
String[] result = SpringBeanUtil.getApplicationContext().getBeanNamesForType(IPrizeInvoke.class);
返回 bean name 的String 数组
具体代码如下:
public class InitListener implements ServletContextListener { @Override public void contextDestroyed(ServletContextEvent arg0) { } @Override public void contextInitialized(ServletContextEvent event) { ServletContext sc = event.getServletContext(); ApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(sc); Map<String, IMsgHandler> result = ac.getBeansOfType(IMsgHandler.class); for (Map.Entry<String, IMsgHandler> entry : result.entrySet()) { System.out.println(entry.getKey());// 默认是类名(不带报名) System.out.println(entry.getValue().getClass());// 类的全名输出 entry.getValue().handler(new Msg());// 调用对象的方法输出 } }}
输出结果:
AMsgHandler class com.lenovo.ai.msg.handler.AMsgHandler amesssage BMsgHandler class com.lenovo.ai.msg.handler.BMsgHandler bmesssage
暂时没有评论,来抢沙发吧~