如何解决如何基于参数创建Spring Boot Bean
我有一个自定义(非春季)命令行处理程序,我想创建一些使用该计算参数配置的春季豆子
fun main(args: Array<String>) {
val computed = processArgs(args)
if (computed.xxx()) {
runApplication<Main>(*args) // run spring app
} else {
do_something_without_spring(computed)
}
}
的bean工厂。
@Configuration
class Config {
@Bean
fun createBean() {
if (computed.xyz()) ... // how to pass `computed` here?
}
}
我应该如何通过?只是将其编码为字符串并添加到args?以后如何以工厂方法访问它?还是有什么方法可以将bean注入spring上下文中?
解决方法
您可以自动装配ApplicationArguments
bean来读取传递给SpringApplication.run(…)
的应用程序参数。
示例:
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class,args);
}
}
@Configuration
class C {
@Bean
B b(ApplicationArguments args) {
System.out.println(String.join("",args.getSourceArgs()));
return new B();
}
}
class B { }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。