Как экранировать "@" в файле свойств весенней загрузки - PullRequest
1 голос
/ 30 июня 2019

У меня есть приложение весенней загрузки, которое подключается к salesforce для извлечения данных из salesforce и загрузки данных в базу данных SQL-сервера.Я пытаюсь получить все свойства из файла application.properties.У моего пароля есть @ и, следовательно, при чтении этого свойства во время выполнения я получаю «пример» в качестве пароля вместо «пример @ страна»

Eg : 
Pwd = example@country

Я проверил несколько полезных ссылок, но не повезло, любая помощь приветствуется

https://docs.oracle.com/cd/E23095_01/Platform.93/ATGProgGuide/html/s0204propertiesfileformat01.html

Пакет утилит для извлечения реквизитов конфигурации.

                package SFToJava.Utils;

                import org.springframework.beans.factory.annotation.Autowired;
                import org.springframework.context.annotation.Configuration;
                import org.springframework.core.env.Environment;
                @Configuration
                public class configUtility {
                    @Autowired
                    private Environment env;

                    public String getProperty(String pPropertyKey) {
                        return env.getProperty(pPropertyKey);
                    }
                }

файл свойств:

password = example@country

Я получаю данные в своем классе обслуживанияследующим образом:

            loginParams.add(new BasicNameValuePair("client_id",configUtil.getProperty("consumerKey")));
            loginParams.add(new BasicNameValuePair("client_secret", configUtil.getProperty("consumerSecret")));
            loginParams.add(new BasicNameValuePair("username", configUtil.getProperty("username")));
            loginParams.add(new BasicNameValuePair("password", configUtil.getProperty("password")));

Я предполагаю, что пароль должен иметь "example @ country" при анализе в списке, а не только "example".

fyi.я могу подключиться к Salesforce, напрямую используя пароль, как показано ниже

            private static final String username = "******";
            private static final String password = "example@coutnry";
            private static final String consumerKey = "*************8";
            private static final String consumerSecret = "************";

loginParams.add(new BasicNameValuePair("client_id", consumerKey));
        loginParams.add(new 
BasicNameValuePair("client_secret", consumerSecret));
        loginParams.add(new 
BasicNameValuePair("grant_type", "password"));
        loginParams.add(new 
BasicNameValuePair("username", username));
        loginParams.add(new 
BasicNameValuePair("password", password));

1 Ответ

0 голосов
/ 30 июня 2019

Обычно вам не нужно экранировать @ или вы можете использовать экранированный \\@ в вашем .properties файле:

mail.address=user\\@domain.com

Но у меня были некоторые проблемы с использованием этого в целях аутентификации. В этом случае вы можете использовать закодированный %40 для @:

# replace @ in email with %40
mail.address=user%40domain.com
...