gpt4 book ai didi

java - 在开始时从文件中读取数据以在 Spring Boot 的 Controller 中使用

转载 作者:行者123 更新时间:2023-11-29 04:32:04 28 4
gpt4 key购买 nike

我有一个像这样的文本文件

1 E
2 F
3 A

我想将它放入一个 HashMap 中并在 Controller 中使用它来为客户端提供键值对服务。我必须在开始时将文件作为参数,比方说

java -jar application.jar [filename]

我认为我必须从 SpringBootApplication 的主要方法中检索参数(文件名),将数据放入服务(如何传递它?),然后将其 Autowiring 到 Controller 中。在 Spring Boot 域中执行此操作的最佳做​​法是什么。

最佳答案

尝试类似于下一个代码片段的东西:

@Configuration
public class Config {
private final static Logger logger = LoggerFactory.getLogger(Config.class);

@Value("classpath:#{systemProperties.mapping}")
// or @Value("file:#{systemProperties.mapping}")
private Resource file;

@Bean(name="mapping")
public Map<Integer,Character> getMapping() {
Map<Integer,Character> mapping = new HashMap<>();
try(Scanner sc = new Scanner(file.getInputStream())) {
while(sc.hasNextLine()){
mapping.put(sc.nextInt(),sc.next().charAt(0));
}
} catch (IOException e) {
logger.error("could not load mapping file",e)
}
return mapping;
}

}

@Service
public class YourService {

private final static Logger logger = LoggerFactory.getLogger(YourService.class);

@Autowired
@Qualifier("mapping")
private Map<Integer,Character> mapping;

public void print(){
mapping.forEach((key, value) -> logger.info(key+":"+value));
}
}

@SpringBootApplication
public class SpringLoadFileApplication {

public static void main(String[] args) {

ConfigurableApplicationContext configurableApplicationContext = SpringApplication.run(SpringLoadFileApplication.class, args);
YourService service = configurableApplicationContext.getBean(YourService.class);
service.print();
}
}

运行程序如 java -Dmapping=mapping.txt -jar application.jar

关于java - 在开始时从文件中读取数据以在 Spring Boot 的 Controller 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43424524/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com