Не удалось разрешить местозаполнитель 'kafka.bootstrap-servers' в строковом значении "$ {kafka.bootstrap-servers}" - PullRequest
0 голосов
/ 19 июня 2019

Мне нужно продолжить проект кого-то другого, но я, когда запускаю весеннее приложение на Intellij, сталкиваюсь с ошибкой. Я новичок весной и Maven. У меня есть application.properties в папке ресурсов, нет файла xml для настройки.

Вот часть сборки pom.xml :

<parent>
<groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
</parent>
<build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/*.properties</include>
                </includes>
            </resource>
        </resources>
        <!--
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        -->
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <!--
                <configuration>
                    <mainClass>kobdig.SimulationApplication</mainClass>
                </configuration>
                -->
            </plugin>
        </plugins>
    </build>
</code>

SimulationApplication.java :

@SpringBootApplication
public class SimulationApplication {

    public static void main(String[] args){
        SpringApplication.run(SimulationApplication.class, args);
    }
}

SenderConfig.java :

@Configuration
@PropertySource(ignoreResourceNotFound = true, value = "file:application.properties")
public class SenderConfig {

    @Value("${kafka.bootstrap-servers}")
    private String bootstrapServers;

    @Bean
    public Map<String, Object> producerConfigs() {
        Map<String, Object> props = new HashMap<>();
        // list of host:port pairs used for establishing the initial connections to the Kakfa cluster
        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,
                bootstrapServers);
        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
                StringSerializer.class);
        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,
                StringSerializer.class);

        return props;
    }

application.properties :

server.port=9090
kafka.bootstrap-servers = localhost:2020

и Sender.java :

public class Sender {

    private static final Logger LOGGER =
            LoggerFactory.getLogger(Sender.class);

    @Autowired
    private KafkaTemplate<String, String> kafkaTemplate;

    public void send(String topic, String payload) {
        LOGGER.info("sending payload='{}' to topic='{}'", payload, topic);
        kafkaTemplate.send(topic, payload);
    }
}

Я сталкиваюсь с этой ошибкой:

вложенным исключением является java.lang.IllegalArgumentException: не удалось разрешить местозаполнитель 'kafka.bootstrap-servers' в строковом значении "$ {kafka.bootstrap-сервера}"

Уже много раз пробовал, видел много похожих тем в stackOverflow, но не могу найти проблему. @PropertySource не помог. Можете ли вы помочь мне, пожалуйста?

1 Ответ

0 голосов
/ 20 июня 2019

Убедитесь, что файл application.properties находится в вашем пути к классам. Если файл свойств находится в другом пакете, он не будет автоматически загружен весной.

Попробуйте использовать источник свойств, как показано ниже, еслифайл свойств находится в вашем classpath

@PropertySource("classpath:application.properties")

Если вы поместите application.properties в src/main/resources, тогда нет необходимости использовать аннотацию @PropertySource. Весна должна автоматически ее обработать.

Убедитесь, что другие значения из вашего application.properties собираются, если не из-за компонента PropertySourcesPlaceholderConfigurer, попробуйте создать компонент PropertySourcesPlaceholderConfigurer.

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