某个包(MyClass.java
)中的一类我的(packageC
)使用注释导致以下错误:
NoSuchBeanDefinitionException: No qualifying bean of type [com.foo.SomeAnnotation] is defined
使用的注释来自第三方库(com.foo
)
我没有使用XML来配置Spring。我所做的是在设置我的应用程序期间,我创建了一个AnnotationConfigApplicationContext
对象,我用它来扫描包注释类,然后从这些类创建bean。
应用程序初始化程序:
...
final private AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
public void initApp() {
//packageC is not scanned
ctx.scan("packageA", "packageB");
ctx.refresh();
}
// Called by the application when a bean is required
public <A> A getBeanForClass(Class<A> clazz) {
return ctx.getBean(clazz);
}
...
因为我知道第三方库的注释不能由Spring管理(相反,Spring不能从该库创建bean)我从扫描中排除了包含类的类包使用第三方注释:< / p>
packageC.MyClass
package packageC
import com.foo.Annotation
public class MyClass {
...
@Annotation
public void someMethod() {
...
}
}
我的问题是,如果我没有告诉Spring从“packageC”中的带注释的类创建bean,我会收到错误???
我必须补充一点,someMethod()
使用扫描包中的类中的对象。
我可能过于含糊,但我想关注scan
AnnotationConfigApplicationContext
的行为,而不是试图开始讨论实施细节。
无论如何,这里有我申请的一些细节:
Global
对象中完成(根据Play-Spring-Jpa教程)Deadbolt
(带有@Restrict
注释)感谢您给我的任何澄清:)
编辑:
我在play-framework google group找到了相关问题。请注意,那家伙实际上是用带注释的类扫描包裹......我不是。
答案 0 :(得分:0)
您应该添加一个注释,例如@Component
或@Configuration
或@Service
[com.foo.SomeAnnotation]
类的开头使spring上下文知道它。
是一种四季豆。