@ Autowire seltsames Problem
Ich habe ein seltsames Verhalten beim automatischen Verdrahten
Ich habe einen ähnlichen Code wie diesen, und es funktioniert
@Controller
public class Class1 {
@Autowired
private Class2 object2;
...
}
@Service
@Transactional
public class Class2{
...
}
Das Problem ist, dass ich brauche, dass die Class2 eine Schnittstelle implementiert, so dass ich nur die Class2 geändert habe, so dass es jetzt so ist:
@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);
}
it diesem Code bekomme ich einorg.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type for Class2
. Es scheint, dass@Transitional
Annotation ist nicht kompatibel mit der Schnittstelle, weil, wenn ich das @ entfern@Transitional
Annotation oder das implements IServiceReference<Class3, Long>
Das Problem verschwindet und die Bohne wird injiziert (obwohl ich beide in dieser Klasse haben muss). Es passiert auch, wenn ich die Anmerkung@Transitional
in den Methoden statt in der Klasse.
Ich verwende Spring 3.0.2, wenn dies hilft.
Ist die Schnittstelle nicht mit der Transaktionsmethode kompatibel? Kann es ein Frühlingswanze sein?