@Autowire странная проблема
У меня странное поведение при автопроводке
У меня есть подобный код, как этот, и он работает
@Controller
public class Class1 {
@Autowired
private Class2 object2;
...
}
@Service
@Transactional
public class Class2{
...
}
Проблема в том, что мне нужно, чтобы Class2 реализовал интерфейс, поэтому я изменил только Class2, так что теперь он выглядит так:
@Controller
public class Class1 {
@Autowired
private Class2 object2;
...
}
@Service
@Transactional
public class Class2 implements IServiceReference<Class3, Long>{
...
}
public interface IServiceReference<T, PK extends Serializable> {
public T reference(PK id);
}
с этим кодом я получаюorg.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type for Class2
, Кажется, что@Transitional
аннотация не совместима с интерфейсом, потому что если я удаляю@Transitional
аннотация или яmplements IServiceReference<Class3, Long>
проблема исчезает и бин вводится (хотя мне нужно иметь оба в этом классе). Бывает и так, если я поставлю аннотацию@Transitional
в методах, а не в классе.
Я использую Spring 3.0.2, если это помогает.
Не совместим ли интерфейс с транзакционным методом? Может ли это быть весенняя ошибка?