2014-11-05 2 views
1
@Service 
public interface DatabaseConnector { 
    public Model getModel(); 
} 

@Configuration 
@Profile({"!test"}) 
public class DatabaseConnectorT implements DatabaseConnector { 

    private final Model model; 

    @Autowired 
    public DatabaseConnectorT(@Value("${assemblerFile}") String assemblerFile) { 
     model = TDBFactory.assembleModel(assemblerFile); 
    } 
} 

Я получаю сообщение об ошибке, что этот класс bean не может быть создан, и должен быть задан конструктор по умолчанию. Зачем это нужно? У меня есть две разные реализации интерфейса, которые должны быть загружены в зависимости от активного профиля. Конфигурация должна выполняться с аннотациями.Несколько профилей - впрыск пружинных бобов

ответ

0

Конструктор по умолчанию - это конструктор без параметров.

Согласно сообщению об ошибке, я полагаю, что класс создается с помощью отражения. Итак, вы должны предоставить способ создания класса через отражение.

Я предположил, что значение assemblerFile в вашем конструкторе не может быть определено с помощью отражения, поэтому вместо него вызывается конструктор по умолчанию, который не предоставляется.