在springmvc中使用注解已经司空见惯了,今天见到了@Service("xxx")这种形式,让我大吃一惊。原来在service后面可以加参数,作为该service的名字,在spring容器中就是bean的id,用于与其他类区别,平时不需要区别,所以一直都是不带参数的。举个需要区别的场景:
假如有一接口personService,有两个实现类maleService、FemaleService,在某一个controller中这样写道
@Autowired private PersionService persionService;
这种情况下会出现问题,因为不确定该pserisonService具体是哪个实现类的。
此时,上面的给service取名字的形式就用到了,可以这样写
@Service(“male”) public class MaleService{ } @Service("female") public class FemaleService{ }
在controller中这样写
@Autowired @Qualifier(“male”) private PersionService presionService
这样就告诉程序我要用的实现类是MaleService