@resource、@Autowired、@Service在一个接口多个实现类中的应用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jisuli1987/article/details/76036744

      Spring在没有引入注解之前,传统的Spring做法是使用.xml文件来对bean进行注入,所有的内容都需要配置在.xml文件中,使配置和编程分离,却增加了可读性和复杂度。

       Spring注解将复杂的配置文件用简单@xxx代替,当出现一个接口多个实现类的时候,究竟是用的哪个实现类呢?

示例代码:

public interface DataDao{
}


@Service

public class ImgDataDao implements DataDao{

}


@Service

public class PayDataDao implements DataDao{

}

public class TestCase{

@Resource

private DataDao imgDataDao;

@Resource

private DataDao payDataDao;


}

1)利用@Service注解自动将类ImgDataDao和类PayDataDao注解为bean,id为imgDataDao和payDataDao,即ImgDataDao和类PayDataDao的第一个字母小写的id。

2)@Resource按byName自动注入,@Autowired按byType自动注入;

3)@Resource可用@Autowired替换

4)当不想用默认的imgDataDao和payDataDao----id命名时,可用变为如下:

@Resource(name="imgDataDao")                             

private DataDao xx;

或者:

@Autowired

@Qualifier("imgDataDao")

private DataDao yy;

没有更多推荐了,返回首页