проблема доступа к значению, определенному в файле application.properties в Spring Boot

#java #json #spring #spring-boot #application.properties

#java #json #spring #spring-boot #application.properties

Вопрос:

Я пытаюсь поместить файл JSON в свой код, но я всегда получал NULL при запуске отладчика :

 package com.jacobtrashcompany.google;

import java.io.IOException;
import java.nio.file.Paths;

import javax.annotation.PostConstruct;

import com.google.api.client.util.Value;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseOptions;
import com.google.firebase.database.core.Path;

import org.hibernate.annotations.common.util.impl.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

import ch.qos.logback.classic.Logger;

@Service
@Component

public class FCMInitializer {
    @Value("${app.firebase-configuration-file}")
    private String firebaseConfigPath;
    //Logger logger = LoggerFactory.getLogger(FCMInitializer.class);

    @PostConstruct
    public void initialize() {
       // logged.info("Start init");

       try {
            FirebaseOptions options = new FirebaseOptions.Builder()
                   .setCredentials(
                           GoogleCredentials.fromStream(new ClassPathResource(firebaseConfigPath).getInputStream()))
                   .build();
           if (FirebaseApp.getApps().isEmpty()) {
               FirebaseApp.initializeApp(options);
           }
       } catch (final IOException e) {
        System.out.print("**************************************************"  e);
    }
    }
}
  

это мой FCMService :

 package com.jacobtrashcompany.google;

import com.google.firebase.messaging.FirebaseMessaging;
import com.google.firebase.messaging.FirebaseMessagingException;
import com.google.firebase.messaging.Message;
import com.jacobtrashcompany.Model.PnsRequest;

import org.springframework.stereotype.Service;

@Service
public class FCMService {

    public String pushNotification(PnsRequest pnsRequest) {
        Message message = Message.builder()
                .putData("content", pnsRequest.getContent())
                .setToken(pnsRequest.getFcmToken())
                .build();

        String response = null;
        try {
            response = FirebaseMessaging.getInstance().send(message);
        } catch (FirebaseMessagingException e) {
            e.printStackTrace();
        }
        return response;
    }
}
  

это мой PnsRequest :

 package com.jacobtrashcompany.Model;

public class PnsRequest {
    private String fcmToken;
    private String content;

    public String getFcmToken() {
        return fcmToken;
    }

    public void setFcmToken(String fcmToken) {
        this.fcmToken = fcmToken;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }
    
}

   
  

это мой путь к файлу json «я использую Linux»

 app.firebase-configuration-file=/home/okba/Documents/webServer/src/main/resources/JSON/notificationpush-94201-firebase-adminsdk-hqxpf-b21a6f50b9.json
  

и это мой файл JSON :

 {
  "type": "service_account",
  "project_id": "notificationpush-94201",
  "private_key_id": "34d0d55f8b0ee63889f9e225d087c6170d016c",
  "private_key": "-----BEGIN PRIVATE KEY-----nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCUJf9C1vWSqI67nn7a/mzPJMbXzBrK9gN2xdU2j6a26FQvYvnWnkVMmyLDNEXWLh6adxjTnPrfKuvDbn5y60nwWKAd7i4U3iZnt53kDvS5Za9R3S/8VQ0DBen7npCrkM3gEjehBE6xd04TMvnxDDHdDiMQbMNQEuxsKBtAeBKv8vTK21tJCUh4/XPcqK/FWqIPKJOIVdeKge6PUbWnknKPj/OISaWjXn 6gs fB6v0NKtnQoZ87XWmzTr6dK72fx5EN7IdlKrIunF7f3jP6YyOcHc7Gk/DByNBz3sF1vRXwd7up/kDuWahMNjBtFvTvuK4cbU5f1s8 knu0FmLKE/AgMBAAECggEABUcomxorFpCrFnPKtXR95FGWkLQbjb/NEM5D4q6SZ2TqnOUxpHFFY8TKeMI102XCO7DkMV8lhZTdtbvrYrEusDVjNYYTdsE6utc6daUkRRWf3n1OAS3ghaE3eaTntOJhoKAq24bal4ekwESv6GLweXdNEUZB5MdBCoWSnYx/ZMTddvnhaVdIuNHUxXELKLl4EeV92InT1EQZpzzZrkPe9MVJcOT3ckk97nDeIGAVvs k5mpri5sSsePvIvO5zJZJ11A5QySO9mJm1t7ejYNMghwI S1 UXCJuDnmqcsg9MJ7HRQgSc3sIiswQ4/MiAkIWCAcsG9NjEVTQKBgQDHpNBsvnrYGv9vGyrJng8rSCMdRKaZh2Twv06RL4CBJ/2pkutK8kUHqEqT CYQ3BfMYS4Jc6fwdmcOmWcRnn2H/SL zahxp0PJ/vLFlEzsp /voUoXK//LZ3oJkBv5SO6Ut FnEOOB X0MH8SVBvn0/qCY8P4hTxddbVhJUGE3pIIZQKBgQC99 NurhsLbXbF881oVI7R1LxUcQpUdMttnhUejTe868UqvooNhbQ2Q14Wv88fGPzSQdBLBFxkKa6H2Nv05i0kcsSL3h/g/oTQEn9CAC3poj4nAtrSHqcYqTFIamZaxFMOycX4X A1O4raMDZlEtWD8s6lxrOM0 5uqon 5u6vxZ 0wKBgEQqoUPQEg/BwB/GrehaiKEIgE3VI8tbKjLGV93UbBH4FPLJ23SpnQFFVBmL7CtrivCs6dQuWlQ/iVaxyEB7JDHPPC1deNAkmPhGjGePlm7ybAPaUXaLxn/beA7V1sdaQKQk2OChIp1Ze3ntSuj7lvLqTgvaQYkhDzRPgjiWh9um0FAoGAAfQknsKS1vn5XtF13hVUpStsnPK8U7h1tYij2vaU1iqOkov3G4B g/hZZV5/oNA  WKX4n82draIIG3mNeY1MdY2Am/ei2EuFziYGBOsZTS38urCmVqbWVOUICyH9PMD76j/kjnhaM/Hy0Z hT5TMAVlj6qyKeC5Ny3GRnNVjRU5OUCgYACufDTrmnYMslFGVBxQbXZnvtcfAkl44RoNY3RnMULyNt6JICq7Y0yiot6Foe21wvU/53oVASwqolca8nYu 498uHQBMJGPWxAk5FJVPlHGG55S3bE zkOeyEsU/ByFz/nle/O9nhyMsUeB4VnvPFDq/E10SEfcLUxfVrX4Q==n-----END PRIVATE KEY-----n",
  "client_email": "firebase-adminsdk-hqxpf@notificationpush-94201.iam.gserviceaccount.com",
  "client_id": "115179550548917479389",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-hqxpf@notificationpush-94201.iam.gserviceaccount.com"
}
  

мой файл JSON находится внутри src/main/resources/JSON/otificationpush-94201-firebase-adminsdk-hqxpf-b21a6f50b9.json в моем проекте, посмотрите на картинки, пожалуйста

введите описание изображения здесь

введите описание изображения здесь

итак, это все мои данные о моем сервере! все, что я хочу, чтобы отправить уведомление из моего серверной части в мое приложение для Android.

Ответ №1:

Вы не отметили FCMInitializer с @Component . Это означает, что ваш класс не является управляемым компонентом. Что означает, что @Value() не будет работать!

Комментарии:

1. куда именно я могу добавить @Component?

2. @pitcho Документация отвечает на это docs.spring.io/spring-framework/docs/current/javadoc-api/org /…

3. хорошо, я добавляю его над классом, но все равно firebaseConfigPath : Null !!

4. @pitcho в этом случае вам может потребоваться добавить больше деталей к вашему вопросу. Пожалуйста, предоставьте минимальный проверяемый пример кода

5. @Prashant emm любая помощь?

Ответ №2:

я исправил проблему: из

 app.firebase-configuration-file=/home/okba/Documents/webServer/src/main/resources/JSON/notificationpush-94201-firebase-adminsdk-hqxpf-b21a6f50b9.json
  

Для

 app.firebase-configuration-file=JSON/notificationpush-94201-firebase-adminsdk-hqxpf-b21a6f50b9.json