实现接口的类型(实现接口的所有类)

大雄 506 2022-06-16


该方法有两种类型的重载:
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



版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java开发者值得关注的7款新工具
下一篇:《Java程序员修炼之道》作者Ben Evans:保守的设计思想是Java的最大优势
相关文章

 发表评论

暂时没有评论,来抢沙发吧~