java .lang.IllegalArgumentException: недопустимое логическое значение @Value ("$ {com.test.isTestEnable") - PullRequest
0 голосов
/ 22 апреля 2020

Я получаю ** Причина: org.springframework.beans.TypeMismatchException: Не удалось преобразовать значение типа 'java .lang.String' в требуемый тип 'java .lang.Boolean'; вложенное исключение: java .lang.IllegalArgumentException: **

Я полагаю, это происходит из-за отсутствия конфигурации пружинного заполнителя. Но я инициализировал компонент в контексте приложения и все еще получаю эту ошибку. Может ли кто-нибудь помочь мне ??

    @Value("${com.test.isTestEnable")
    public Boolean isTestEnable;

Spring Properties Class

public class SpringPropertiesUtil extends PropertyPlaceholderConfigurer {

    private static HashMap<String, String> systemPropertiesMap;

    private int springSystemPropertiesMode = SYSTEM_PROPERTIES_MODE_FALLBACK;

    public static String getProperty(final String name) {
        return systemPropertiesMap.get(name);
    }

    @Override
    protected void processProperties(final ConfigurableListableBeanFactory beanFactory, final Properties props) throws BeansException {
        super.processProperties(beanFactory, props);
        systemPropertiesMap = new HashMap<String, String>();
        for (final Object key : props.keySet()) {
            final String keyStr = key.toString();
            final String valueStr = resolvePlaceholder(keyStr, props, springSystemPropertiesMode);
            systemPropertiesMap.put(keyStr, valueStr);
        }
    }

    @Override
    public void setSystemPropertiesMode(final int systemPropertiesMode) {
        super.setSystemPropertiesMode(systemPropertiesMode);
        springSystemPropertiesMode = systemPropertiesMode;
    }

мой файл контекста приложения

  <bean id="placeholderConfig" class="com.test.SpringPropertiesUtil">
        <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
        <property name="locations">
            <list>
                <value>file:${config.path}/application.properties</value>
                <value>file:${config.path}/log.properties</value>
            </list>
        </property>
    </bean>

1 Ответ

0 голосов
/ 22 апреля 2020

Попробуйте изменить следующую строку

@Value("${com.test.isTestEnable")

на

@Value("#{new Boolean('${com.test.isTestEnable}')}")

ИЛИ

@Value("#{T(Boolean).parseBoolean('${com.test.isTestEnable}')}")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...