当前位置: 首页 > 知识库问答 >
问题:

CDI1.1中注释的bean发现模式的含义

寿阳华
2023-03-14

我正在将一个应用程序迁移到Java EE7,并希望迁移到CDI1.1。但是我不明白bean-discovery-mode=“annotated”的含义。CDI1.1规范不是很有帮助。至少我没有找到任何有用的段落。我错过了吗?

此示例使用bean-discovery-mode=“all”完美运行,并注入loggingclass实例:

public class LoggingClass {
    public Logger logger = Logger.getLogger("ALOGGER");

}

@Test
public class MMLoggerProducerIT extends Arquillian {

    @Inject private LoggingClass lc;

}

但是,如果我从bean-discovery-mode=“all”更改为bean-discovery-mode=“annotated”,容器将无法将实例注入字段LC

如何注释loggingclass才能正确使用bean-discoverymode=“annotated”

共有1个答案

金承嗣
2023-03-14

当使用bean-discovery-mode=“annotated”时,只会发现带有bean定义注释的类。忽略所有其他类。任何作用域类型都是定义注释的bean。如果在bean类上声明了作用域类型,那么该bean类就被称为有一个bean定义注释[spec]。1.1规范在这里并不完全清楚。只发现具有@normalscope作用域或@dependent伪作用域的类,忽略@javax.inject.singleton和所有其他@scope(pseudo)作用域。

请注意,“bean定义注释”的定义在CDI1.2中发生了变化,现在定义得非常好:

bean定义注释集包含:

  • @applicationscoped、@sessionscoped、@conversationscoped和@requestscoped注释,
  • 所有其他普通作用域类型,
  • @interceptor和@decorator注释,
  • 所有构造型注释(即用@stereotype注释的注释),以及@dependent scope注释。
 类似资料:
  • 问题内容: 我阅读了有关的Javadoc 。 但是我不明白这个注释是什么意思? 你能清楚说明一下吗? 问题答案: 当你使用Java代码(而不是XML)配置Spring应用程序时,用于启用Spring MVC。如果你还不熟悉Spring对Java配置的支持,那么这是一个不错的起点。 等效于XML。它支持对带注释的类的支持,该类用于将传入的请求映射到某个方法。你可以在参考文档中阅读有关其默认配置以及如

  • 在这种情况下,NotNull-annotation有什么意义?

  • 问题内容: 我想创建一个自定义注释(使用Java),该注释将接受其他注释作为参数,例如: 但这会导致编译器错误“注释成员的类型无效”。 Object []也无效。 有什么方法可以做我想要的吗? 问题答案: 我本人就此提出针对此问题的解决方法: 好吧,我想要实现的是这样的: 拟议的解决方法: 用以下方法定义一个无参数构造函数的类(稍后将由您自己的注释处理器调用): 用法:

  • 考虑以下基本的Foo、Bar和Main类: 运行Main打印“20个随机AspectJ字节”。我想取代执行吧。从Foo调用时的GenerateRadom。随机你好。这可以通过以下方面实现: 这可以工作,Main现在打印“7个随机AspectJ字节”。 如何使用注释表达相同的方面?这是我的尝试: 这不起作用,我收到以下编译器警告: 我已经验证了p\u randomHello和p\u Generato

  • 我有一个被注释为的类,然后将其添加到另一个类中。但是,我需要删除这个注释,而是在以前自动连线它的类中用一个注释方法创建它。 以前的类看起来像: ...或者我直接调用这个方法(在我看来不是正确的方法): …或者这两个都不正确?

  • 如何使用注释在Spring中提供bean继承?在XML配置中,我使用了