我必须继续其他人的项目,但是当我在Intellij上运行spring应用程序时,我遇到了错误。我是春季和冬季新手。 我在ressource文件夹中有一个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-servers}”
已经尝试了很多事情,我在stackOverflow上看到了很多类似的主题,但是找不到问题。 @PropertySource没有帮助。 你能帮我吗?
答案 0 :(得分:0)
请确保您的application.properties文件位于类路径中。如果您的属性文件位于另一个软件包中,那么它将不会在spring之前自动被占用。
如果属性文件在您的类路径中,请尝试使用如下所示的属性源
@PropertySource("classpath:application.properties")
如果将application.properties放在src/main/resources
下,则无需使用@PropertySource
注释。Spring应该会自动使用它。
验证是否从application.properties
中拾取了其他值,如果不是,则可能是由于PropertySourcesPlaceholderConfigurer
Bean所致,请尝试创建PropertySourcesPlaceholderConfigurer
的bean。