редактировать примечание: во время отладки, autowired объект конфигурации в главном классе всегда возвращается нульне может получить свойства с помощью пружинных
Я пытаюсь создать простое приложение пружинный с классом Configuration и основным классом, который в основном получает значения из внешний файл application.properties, который будет использоваться в основном классе. Поскольку я новичок в весне, возможно, я пропустил что-то основное, поэтому я ценю любую помощь. Спасибо заранее.
Вот application.properties (который находится в той же папке, что и файл Config.java)
kinesis.consumer.transaction.streamName = sample-stream-name
kinesis.consumer.transaction.applicationName = sample-application-name
И Config.java файл
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
@Configuration
@PropertySource("classpath:application.properties")
public class Config {
@Value("${kinesis.consumer.transaction.streamName}")
private
String transactionStreamName;
@Value("${kinesis.consumer.transaction.applicationName}")
private
String transactionApplicationName;
public String getTransactionStreamName() {
return transactionStreamName;
}
public void setTransactionStreamName(String transactionStreamName)
{
this.transactionStreamName = transactionStreamName;
}
public String getTransactionApplicationName()
{
return transactionApplicationName;
}
public void setTransactionApplicationName(String transactionApplicationName)
{
this.transactionApplicationName = transactionApplicationName;
}
@Bean
public static PropertySourcesPlaceholderConfigurer propertyConfigInDev() {
return new PropertySourcesPlaceholderConfigurer();
}
}
и, наконец, главный класс
public class TransactionProcessor {
@Autowired
private static Config config;
public static void main (String args[]) {
System.out.println(config.getTransactionApplicationName()+" " + config.getTransactionStreamName());
}
}
нижеследующая структура проекта
Вы можете поделиться своей подробной структурой проекта? Я считаю, что это происходит потому, что application.properties может не быть на пути к классам – koder23
Является ли это приложением Spring Boot или вы не используете Spring Boot? Файл 'application.properties' - это то, что используется Spring Boot, но если вы не используете Spring Boot, это не будет автоматически загружено. Вам нужно будет сделать то, что @ koder23 показывает ниже, чтобы Spring подобрал его. – Jesper