首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >参数化弹簧配置

参数化弹簧配置
EN

Stack Overflow用户
提问于 2018-03-01 23:29:13
回答 2查看 46关注 0票数 1

假设您具有以下弹簧配置:

代码语言:javascript
复制
@Configuration
public class Config {
    @Bean
    public SomeBean someBean() {
        SomeBean someBean = new SomeBean();
        someBean.setVar("foobar");
        return someBean;
    }
}

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-02 00:03:21

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

完整代码示例:

代码语言:javascript
复制
@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();
    }

}
票数 1
EN

Stack Overflow用户

发布于 2018-03-01 23:34:26

考虑使用@Value注释:

代码语言:javascript
复制
@Configuration
public class Config {

    @Value("${myParamValue}")
    public String myParam;

    @Bean
    public SomeBean someBean() {
        SomeBean someBean = new SomeBean();
        someBean.setVar(myParam);
        return someBean;
    }
}

您需要以某种方式将参数放入环境中:有各种使用OS环境、运行时参数或配置文件的技术,以满足您的需要。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49053082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档