我有一个像下面这样的单件服务类。
@Service
public class SingletonClass{
@Autowired
private ContextProvider provider;
public Context run(){
context = provider.createContext();
updateContext(context)
}
ContextProvider类:
public abstract class ContextProvider implements MyInterface{
public abstract Context createContext();
}
配置:
<bean name="provider"
class="xyz.s.s.ContextProvider" >
<lookup-method name="createContext"
bean="someBean" />
</bean>
<bean id="somebean" class="com.x.y.someclass" />
<bean id="singletonService" class="com.x.y.SingletonClass" />
当我尝试使用Junit运行上述操作 - &gt;而不是按需创建查找bean时,我收到以下错误
org.springframework.beans.factory.BeanCreationException: aused by:java.lang.AbstractMethodError 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeAwareMethods(AbstractAutowireCapableBeanFactory.java:1585) 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1553) 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
看来,查找方法注入在我的情况下不起作用
答案 0 :(得分:0)
我找到了问题并修复了它。
我让抽象类实现了一个接口。所以在运行时,CGLIB无法创建代理类,因为有未实现的方法。
编译器也没有抱怨,因为这是抽象类,并没有指望我们添加接口的所有实现。
我删除了&#39;工具&#39;它运作正常。
所以contextprovider将成为
public abstract class ContextProvider {
public abstract Context createContext();
}
发布此消息,因为人们可能面临同样的情况。