spring-context 是否支持 bean 实例上的 JSR-330 限定符?

发布于 2024-10-20 23:46:44 字数 630 浏览 6 评论 0原文

Spring有自己的Qualifier注释,我认为它相当于javax.inject.Named注释,而后者又是JSR-330中的具体限定符。

所以,我想知道哪个版本的 Spring(如果有的话)支持 Qualifier?

这是我的示例用法,不幸的是它不适用于 spring-context 3.0.5:

@Retention(RUNTIME)
@javax.inject.Qualifier
public @interface Version {

    String value();

}

@Configuration
public class MyConfig {

    @Bean("book-12") @Version("a") Book book12a() { ... }

    @Bean("book-12") @Version("b") Book book12b() { ... }

}

@Component
public class UserClass {

    @Inject @Named("book-12") Book anybook12;

    @Inject @Named("book-12") @Version("b") Book book12_b;

}

Spring has its own Qualifier annotation, I think it's equivalent to the javax.inject.Named annotation, which in turn is a concrete qualifier in JSR-330.

So, I'm wondering which version of Spring, if any, supports Qualifier?

Here is my example usage, unfortunately it doesn't work with spring-context 3.0.5:

@Retention(RUNTIME)
@javax.inject.Qualifier
public @interface Version {

    String value();

}

@Configuration
public class MyConfig {

    @Bean("book-12") @Version("a") Book book12a() { ... }

    @Bean("book-12") @Version("b") Book book12b() { ... }

}

@Component
public class UserClass {

    @Inject @Named("book-12") Book anybook12;

    @Inject @Named("book-12") @Version("b") Book book12_b;

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蓦然回首 2024-10-27 23:46:44

是的,它支持所有 javax.inject.* 注释。我自己已经使用了 javax.inject.Qualifier

顺便说一句,我假设你想要 @Service@Component 而不是 @Bean< /code>,并且您需要将 Book 类设置为 spring 管理的。

Yes, it supports all javax.inject.* annotations. I myself have used the javax.inject.Qualifier

Btw, I assume you want @Service or @Component instead of @Bean, and you need your Book class to be made spring-managed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文