我正在使用spring 4,使用javax注释(JSR-330)。在maven
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
所以我使用@Named
中的@Inject
,@Resource
和javax.annotation.*
代替javax.inject.*
而不是@Autowire
,@Component
, ...而且弹簧很好地支撑着它们。例如:http://www.mkyong.com/spring3/spring-3-and-jsr-330-inject-and-named-example/
我的问题是我在会话范围内有一个带有javax注释的bean,因此我使用了@Named
和spring @Scope
:org.springframework.context.annotation.Scope
我可以使用javax注释创建会话范围bean吗?!
答案 0 :(得分:1)
根据this blog和Official specification,
JSR 330
不支持request
或session
等范围@Scope @Documented @Retention(RUNTIME) public @interface Request { }
开箱即用。您必须创建自己的注释 对此。
让我们看看如何为请求范围执行此操作。
创建自己的范围注释:
public class CustomScopeMetadataResolver extends Jsr330ScopeMetadataResolver {
public Jsr330SpringScopeMetadataResolver() {
registerScope(Request.class.getName(), WebApplicationContext.SCOPE_REQUEST);
}
}
扩展Jsr330ScopeMetadataResolver以在Spring的范围内映射注释:
<context:component-scan base-package="my.package"
scope-resolver="my.resolver.package.CustomScopeMetadataResolver" />
在Spring配置中使用自定义解析器:
<script id="float_fb" src="/fb3.js?t=20151124153706" data-href="https://www.facebook.com/abcd" async></script>
答案 1 :(得分:0)
您必须使用注释:@SessionScoped
示例:
@SessionScoped
public class DukesBday{
...
}