自动装配时我有一种奇怪的行为
我有类似这样的代码,它的工作原理
@Controller
public class Class1 {
@Autowired
private Class2 object2;
...
}
@Service
@Transactional
public class Class2{
...
}
Run Code Online (Sandbox Code Playgroud)
问题是我需要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);
}
Run Code Online (Sandbox Code Playgroud)
用这个代码我得到了一个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 bug?