Я работаю над приложением Spring 3.1 MVC, и для одного из моих сценариев мне пришлось написать две реализации DAO. Я хотел бы знать, как сделать это на служебном уровне на основе другого атрибута объекта.
Например,
class Vehicle {
private name;
private type;
..
..
..
}
@Service
class VehicleServiceImpl implements VehicleService {
// There are two implementations to this DAO
// if Vehicle.type == "CAR", inject CarDAO
// if Vehicle.type == "TRAIN", inject TrainDAO
@Autowired
private VehicleDAO vehicleDAO ;
}
@Repository
class CarDAO implements VehicleDAO {
}
@Repository
class TrainDAO implements VehicleDAO {
}
Если мой автомобиль является автомобилем, мне нужно автоувеличивать CarDAO, и если это поезд, мне нужно автоподписать TrainDAO
Каков наилучший способ реализовать это в Spring 3.1.
Я надеялся использовать либо владельцы мест контекстного объекта, либо аннотацию @Qualifier, но оба они ограничены поиском, основанным на некотором свойстве. Я не уверен, как это сделать во время выполнения на основе свойства другого объекта.