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")
Я надеюсь, что это помогает.