У меня странное поведение при автоподготовке
У меня есть похожий код, похожий на этот, и он работает
@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);
}
с этим кодом я получаю a org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type for Class2
.
Похоже, что аннотация @Transitional
несовместима с интерфейсом, потому что если я удалю аннотацию @Transitional
или я mplements IServiceReference<Class3, Long>
, проблема исчезнет, а bean будет введена (хотя мне нужно иметь оба в этом классе). Это также происходит, если я помещаю аннотацию @Transitional
в методы вместо класса.
Я использую Spring 3.0.2, если это помогает.
Не совместим ли интерфейс с транзакционным методом? Может быть, это ошибка Spring?