Если ваш класс dao в памяти существует (более точно: обнаружен только во время сканирования класса) в тех случаях, когда его следует использовать, чем вы можете @ Primary к нему.
@Primary
указывает, что бину следует отдавать предпочтение, когда найдено несколько кандидатов.
Возможно, вам также стоит взглянуть на функцию Spring 3.1: Профили .
Другим способом было бы написать Конфигурацию, которая в зависимости от некоторого параметра среды возвращает правильный bean-компонент, помеченный как первичный:
/**
* I never have tried to inject a bean in a @Configuratution and
* return it as @Bean annotated it with @Primary, so it is an experiment
* I would been glad to know if it works.
*/
@Configuration
public class Switch {
@Value("#{systemProperties.inmemmory}")
private boolean inMemmory;
@Resource
@Qualifier("normal")
private Dao normalDao;
@Resource
@Qualifier("inMemmory")
private Dao inMemoryDao;
@Bean
@Primary
public Dao dao() {
if (inMemmory) {
return inMemory;
} else {
return normalDao;
}
}
}