1. @Service , @Resource , @Autowired , @Qualifier ;
@Service(" name ") 指定bean的类以及注入时,使用的名称,如果不指定的话,即为back-package包的类名+驼峰
//上面的比较简单,我们只是简单注入一个Java类,那么如果有一个接口,有多个实现,Bean里引用的是接口//名,又该怎么做呢?比如有一个Car接口:
public interface Car
{
public String carName();
}
//两个实现类BMW和Benz:
@Service
public class BMW implements Car
{
public String carName()
{
return "BMW car";
}
}
@Service
public class Benz implements Car
{
public String carName()
{
return "Benz car";
}
}
//写一个CarFactory,引用Car:
@Service
public class CarFactory
{
@Autowired
private Car car;
public String toString()
{
return car.carName();
}
}
//不用说,一定是报错的,Car接口有两个实现类,Spring并不知道应当引用哪个实现类。这种情况通常有两个//解决办法:
//1、删除其中一个实现类,Spring会自动去base-package下寻找Car接口的实现类,发现Car接口只有一个实//现类,便会直接引用这个实现类
//2、实现类就是有多个该怎么办?此时可以使用@Qualifier注解:
@REASOURCE 按照name进行注入·;@AUTOWIRED按照类型进行注入;