0
votes

Utilisation d'applications.Properties dans la classe @Configuration, méthode @bean ne fonctionne pas

J'ai la définition de classe de configuration ci-dessous dans Java Springboot. Cependant, il échoue à la référence aux valeurs de propriété.

 keytab.user.name="username"
 keytab.path="pathtokeytab"


6 commentaires

Quelle est l'erreur? Obtenez-vous une exception de pointeur NULL?


Avez-vous utilisé le nom de la propriété comme application.Property


Afficher votre code de fichier de propriétés


@Jonathan Johx, oui Null Pointer Exception. Je pourrais deviner que le problème étant la valeur étant référencée dans le haricon où le haricot est instancié d'abord avant de relever la valeur de la valeur?


@SIVA RENAME Application.Properties TO BOOTSTRAP.PROPERTES Cela devrait fonctionner.


@Jonathanjohx Il n'a pas fonctionné. J'ai renommé de bootstrap.properties et je vais lancer une erreur en créant un haricot comme il ne peut pas résoudre les espaces réservés à la valeur.


3 Réponses :


-1
votes

Le traitement réel de @Value Annotation est effectué par BeanPostProcesseur et nous ne pouvons donc pas utiliser @Value dans les types de feanPostProcessor.

Exemples: https://www.concreepage.com/spring-5 / Valeur de printemps # Place exploitant

lien: Comment fonctionne exactement le Spring BeanPostProcessor? < / p>


1 commentaires

J'ai décrit cette réponse parce que vous confondez la question principale, laissez-le ajouter plus de détails afin que vous puissiez répondre correctement.



0
votes
  1. Assurez-vous que votre nom de fichier de propriété doit Application.Property et l'emplacement doit être dans

    SRC / Main / Ressources / Application.Properties

    1. Utilisé uniquement @configuration au niveau de la classe et utilisez également @propertysource pour définir l'emplacement de notre fichier de propriétés. @properTysource ("CLASSPATH: configProps. Propriétés ") Si le nom de votre fichier de propriété est différent.

      sinon, le ressort utilise l'emplacement par défaut (classpath: application.properties).


3 commentaires

@MANGDUYOGIL OUI Le nom de fichier de propriété est comme application.properties et dans le répertoire comme vous l'avez mentionné.


Ensuite, essayez avec @properTysource ("ClassPath: Application.Properties")


Je lis les autres valeurs de propriété forment la même application.Properties, mais il est lu dans ma classe de référentiel et cela fonctionne bien.



1
votes

Pouvez-vous s'il vous plaît essayer la méthode ci-dessous,

    keytab.username=uname
    keytab.path=path


4 commentaires

J'ai essayé ceci mais obtenez toujours les valeurs comme null. J'ai supposé que le code ci-dessous fait référence à l'objet de la classe KeyTabconfig: usergroupinformation.loginuserfromkeytabandreturnugi (keytabc onfig.getasername (), ketabconfig.getpath ()); J'ai créé un objet autonome de la classe KeyTabconfig dans CLASSE HBASECONFIG.


@Siva Même si vous n'avez pas été modifié, le DI fonctionnera dans ce cas. Keytabconfig sera injecté comme souhaité


Merci @Midhunmohan. Je l'ai essayé cependant, ça venait comme null.


gitlab.com/midhunmohan/environment-read-demo un échantillon de ce qui précède que vous pouvez Trouvez-le ici @Siva