我创建了一个自定义类型@Action,Spring已经设法在我在配置中配置的包扫描中检测到它。
我想要做的下一步是告诉Spring所有带有@Action的类都应该用原型而不是Singleton创建。
我的@Action界面如下:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Action {
}
我试图用@Scope(“原型”)标记它,但这似乎没有帮助。
我想要的是什么?
肯特
答案 0 :(得分:1)
上下文:组件扫描可以使用自定义范围解析器进行配置,该范围实现org.springframework.context.annotation.ScopeMetadataResolver。
我创建了一个自定义范围解析器,它不仅检查bean的@Scope注释(使用org.springframework.context.annotation.AnnotationScopeMetadataResolver的默认解析器),还查找注释的注释(递归)。 / p>
需要注意的一点是,递归查找注释可能会进入无限循环,因为java.lang.annotation.Documented是使用java.lang.annotation.Documented注释的。最好保持一个表格,指出已经查找了哪个注释。
答案 1 :(得分:0)
不幸的是没有弹簧2.5.X. @ Component-annotation描述了bean的 role ,而scope是一个单独的轴,因此角色和范围描述符通常必须单独应用于实现类。当以这种方式查看时,它会一些感觉(编辑:至少它会这样做几秒钟,无论如何)
我不知道这会如何改变我春天3.x,这不会太远。似乎还有一些改进的余地。