Dans les versions de CDI antérieures à CDI 4.0, les archives JAR et WAR qui contiennent un fichier descripteur de déploiement beans.xml qui ne spécifie pas
d'attribut version sur l'élément racine <beans> sont considérées comme étant des archives de bean explicites.
Dans ces archives, CDI peut gérer et injecter n'importe quel bean, à l'exception de ceux comportant l'annotation @Vetoed.
Dans CDI 4.0, ces archives sont considérées comme des archives de bean implicites. Dans les archives de bean implicites, CDI ne peut gérer et injecter que les beans comportant une annotation de définition de bean.
Pour marquer une archive comme étant une archive de bean explicite et restaurer le comportement de reconnaissance de bean de l'édition précédente,
spécifiez à la fois l'attribut version (défini sur 1.1 ou une version ultérieure) et l'attribut bean-discovery-mode="all"
sur l'élément beans :
<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>
Cette règle dispose d'un correctif automatisé pour ajouter les attributs version et bean-discover = "all " manquants. Copiez la configuration personnalisée vers votre fichier de génération d'application pour activer l'automatisation des correctifs.
Pour plus d'informations sur la migration de Jakarta 10, voir Différences entre Jakarta Contexts and Dependency Injection 4.0 et 3.0.