在沒有指定版本的 beans.xml 檔的模組中,Bean 探索的行為變更

在 CDI 4.0 之前的 CDI 中,如果 JAR 和 WAR 保存檔包含未在根 <beans> 元素上指定 version 屬性的 beans.xml 部署描述子檔案,則視為明確 Bean 保存檔。 在這些保存檔中,CDI 可以管理和注入任何 Bean,不含那些標註有 @Vetoed 的 Bean。

在 CDI 4.0 中,這些保存檔被視為隱含的 Bean 保存檔。 在隱含的 Bean 保存檔中,CDI 只能管理和注入 標註有 Bean 定義註釋的 Bean。

如果要將保存檔標示為明確 Bean 保存檔,並還原舊版的 Bean 探索行為,請在 beans 元素上 同時指定 version 屬性(設為 1.1 或更新版本)和 bean-discovery-mode="all" 屬性:


<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_4_0.xsd"
    bean-discovery-mode="all"
    version="4.0">
</beans>

此規則具有自動修正程式,可新增遺漏的 versionbean-discover = "all " 屬性。 將自訂配置複製到應用程式建置檔,以啟用修正程式自動化。

如需相關 Jakarta 10 移轉資訊,請參閱 Jakarta Contexts and Dependency Injection 4.0 與 3.0 之間的差異