Spring: как ввести значение в статическое поле? - использовать в @BeforeClass - PullRequest
0 голосов
/ 05 сентября 2018

Этот вопрос похож на этот: Spring: Как ввести значение в статическое поле?

но с изюминкой ..

Мне нужно использовать введенные значения в статических методах @BeforeClass & @AfterClass.

Я попытался создать @Component и передать значения из application.properties в статические поля @PostConstruct

Увы ... я получаю исключение нулевого указателя.

Таким образом, вопрос можно перефразировать как

"Как я могу использовать значения из свойств приложения внутри моих методов @AfterClass / @BeforeClass?"


@Component:

package com.vulog.pdfgenerator.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

    @Component
    public class GlobalValue {

        @Value("${spring.thymeleaf.prefix}")
        protected String prefix;

        @Value("${template.tmpfolder}")
        private String tmpfolder;
        public static String tmpFolderStatic;

        @Value("${template.classpath}")
        private String classpath;
        public static String classpathStatic;

        /**
         * Hack! we want to use the static methods BeforeClass/AfterClass
         * so the app property values should be kept static as well.
         */

        @PostConstruct
        public void init(){
            classpathStatic = classpath;
            tmpFolderStatic = tmpfolder;
        }
    }

Я автоматически связываю это с тестовым классом и пытаюсь получить GlobalValue.classpathStatic, но он выдает.

@Autowired
    GlobalValue globalValue;
...