使用javax注释

时间:2015-11-24 14:18:27

标签: java spring javax-inject

我正在使用spring 4,使用javax注释(JSR-330)。在maven

     <dependency>
        <groupId>javax.inject</groupId>
        <artifactId>javax.inject</artifactId>
        <version>1</version>
    </dependency>

所以我使用@Named中的@Inject@Resourcejavax.annotation.*代替javax.inject.*而不是@Autowire@Component, ...而且弹簧很好地支撑着它们。例如:http://www.mkyong.com/spring3/spring-3-and-jsr-330-inject-and-named-example/

我的问题是我在会话范围内有一个带有javax注释的bean,因此我使用了@Named和spring @Scopeorg.springframework.context.annotation.Scope

我可以使用javax注释创建会话范围bean吗?!

2 个答案:

答案 0 :(得分:1)

  

根据this blogOfficial specificationJSR 330不支持requestsession等范围   @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>

参考积分:Spring and JSR 330 scopes

答案 1 :(得分:0)

您必须使用注释:@SessionScoped

示例:

@SessionScoped
public class DukesBday{
...
}