gpt4 book ai didi

java - 参数化 Spring 配置

转载 作者:行者123 更新时间:2023-11-30 06:16:41 24 4
gpt4 key购买 nike

假设您有以下 Spring 配置:

@Configuration
public class Config {
@Bean
public SomeBean someBean() {
SomeBean someBean = new SomeBean();
someBean.setVar("foobar");
return someBean;
}
}

然后我可以在其他类中使用此配置,例如通过使用 @Import(Config.class) 导入它。现在,假设您不想对字符串“foobar”进行硬编码,而是将其作为参数传递给该配置。我该怎么做呢?最好创建一个像 @FooBarConfiguration(var = "foobar") 这样的自定义注释。这可能吗?

最佳答案

@Ben 的答案是经典且更好的方法。但如果您不想使用属性文件,则可以使用 @Bean 。每个@Bean 都包含一个您想要注入(inject)的值。

完整代码示例:

@SpringBootApplication
public class So49053082Application implements CommandLineRunner {

@Bean
String beanValueFooBar() {
return "fooBar";
}

@Bean
String beanValueBarFoo() {
return "barFoo";
}

private class SomeBean {

private String var;

public void setVar(final String var) {
this.var = var;
}
}


@Configuration
public class Config {
@Bean
public SomeBean someBean(String beanValueBarFoo) {
SomeBean someBean = new SomeBean();
System.out.println(beanValueBarFoo);
someBean.setVar(beanValueBarFoo);
return someBean;
}
}

@Override
public void run(String... args) {

}

public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(So49053082Application.class, args);
context.close();
}

}

关于java - 参数化 Spring 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49053082/

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