tom383197087的gravatar头像
tom383197087 2015-09-01 17:32:31

spring如何动态注入Service不同的bean实现类?

比如某Service有实现类A和B,

引用Service的时候,如何动态根据配置文件选择service实现类而注入。

@Resource(name="")

Service service;

所有回答列表(6)
wentao的gravatar头像
wentao  LV24 2015年9月1日

可以吗?同一个接口,不同实现类,不知道spring注解能否区分喔。

tudou的gravatar头像
tudou  LV7 2015年9月2日

动态根据配置文件除非你的配置文件也是活的,这不太现实。bean一旦定义,运行的时候只能有一个指向。动态的实现只能由程序来实现,借助于注解反射这些,很容易实现这一功能。说一种最简单的实现方式:使用Service service=(Service)springUtils.getBean("你想要的bean");然后在配置文件或者注解中配置你的bean名称,就可以动态得到你要的bean了。

一般相同的业务的后缀是相同的,springUtils.getBean(你的具体业务+"serviceImpl");比如springUtils.getBean("Teacher"+"serviceImpl");和springUtils.getBean("Student"+"serviceImpl");至于是teaher还是student肯定是根据你的业务来的,比如他可能是来自于登录信息中。这样理解是不是更容易些了。springUtils百度一搜一堆。

masque的gravatar头像
masque  LV16 2015年9月4日

@Resource(name="")

这里的name=""里面的内容就是

你在service("")里面的内容 (不同的service实现不同的值)

吢涼ㄋ的gravatar头像
吢涼ㄋ  LV11 2015年9月6日

想要通过spring注入应该不能实现吧,不过通过泛型类+反射应该可以

ether007的gravatar头像
ether007  LV1 2015年9月6日

把service通过配置文件配置,不用注解,

lijie的gravatar头像
lijie  LV2 2015年9月8日

写下name里面就可以识别的

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友