Springboot Невозможно получить доступ к ресурсу внутри пути к классу зависимого jar

У меня есть загрузочный JAR-файл MyMain.jar, в котором есть зависимые jar-файлы внутри BOOT-INF/lib.

Я пытаюсь получить доступ к файлу свойств внутри BOOT-INF/lib/MyDep.jar/abcd.properties.

Я попробовал приведенный ниже код.

InputStream in = new ClassPathResource("abcd.properties").getInputStream();
System.out.println("InputStream : "+in);
String line;
BufferedReader br = new BufferedReader(new InputStreamReader(in));          
while ((line = br.readLine()) != null) {
    System.out.println(line);
}

Это прекрасно работает внутри моей Eclipse IDE. но когда я запускаю его из командной строки как jar, он ничего не печатает.

org.springframework.boot.loader.jar.ZipInflaterInputStream@214c265e

readLine () дает ноль во время запуска командной строки.

Может ли кто-нибудь, пожалуйста, помогите!

1 ответ

Или это работа для меня.

Создайте этот класс в проекте приложения

@Configuration
@ComponentScan("yourpackage")
public class AppConfig {
    @Configuration
    @PropertySource("common.properties")
    static class default{}
}

Если вы хотите прочитать файл конфигурации по разным профилям (-Dspring.profiles.active)

@Configuration
@ComponentScan("yourpackage")
public class AppConfig {
    @Profile("alpha")
    @Configuration
    @PropertySource("common-alpha.properties")
    static class Alpha{}

    @Profile("staging")
    @Configuration
    @PropertySource("common-staging.properties")
    static class Staging{}

    @Profile("production")
    @Configuration
    @PropertySource("common-production.properties")
    static class Production{}
}

Вы можете использовать весеннюю аннотацию @Autowired, как показано ниже, но не забудьте аннотировать свой класс с помощью @Component или аналогичных.

@Autowired
Environment env;

Вы можете получить собственность в вашем файле свойств

 env.getProperty("property")

Я надеюсь, что это помогает.

Другие вопросы по тегам