@ Значение в SpringBoot в 2.1.1. ВЫПУСК - PullRequest
0 голосов
/ 08 января 2019

У меня есть это значение, определенное в application.properties файле

tdk.date.format=yyyy-MM-dd'T'HH:mm:ss'.000Z'

, который я использую в этом классе:

public class TdkDateUtils {


    private static final Logger LOG = LoggerFactory.getLogger(CryptoDateUtils.class);


    @Value("${tdk.date.format}")
    private static String tdkDateFormat;

    public static boolean afterYesterday2(String strDate) throws ParseException {

        LOG.debug("tdkDateFormat -> {} ", tdkDateFormat);

        SimpleDateFormat format = new SimpleDateFormat(tdkDateFormat);  
        Date yesterdayDate = Date.from(Instant.now().minus(1, ChronoUnit.DAYS));
        return format.parse(strDate).after(yesterdayDate);
    }
}

но является нулевым

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Spring не позволяет вводить значение в статические переменные. Создайте нестатический метод установки для ввода значения.

private static String tdkDateFormat;

@Value("${tdk.date.format}")
public void setDateFormat(String s){
   tdkDateFormat = s;
}
0 голосов
/ 08 января 2019

TdkDateUtils - это служебный класс, а afterYesterday2 - статический метод. Он существует полностью вне контекста Spring вашего приложения, здесь аннотации типа @Value обрабатываться не будут.

Чтобы @Value работал, вы должны сделать TdkDateUtils бобом, поскольку только бобы Spring будут обрабатываться PropertyPlaceholderConfigurer. В качестве альтернативы можно прочитать и установить свойство самостоятельно в TdkDateUtils статическом блоке инициализации, но это противоречит философии Spring по внедрению зависимостей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...