【问题标题】:In spring-boot, is it possible to get properties without being a spring bean?在spring-boot中,是否可以在不成为spring bean的情况下获取属性?
【发布时间】:2018-04-01 06:01:29
【问题描述】:

我有一个 Configuration.class,它从 application.properties 获取属性。

@Component
public class Configuration {

    @Value("${someValue}")
    public String someValue;
}

我有另一个名为Fetcher 的类,它需要该属性。

class Fetcher {

    @Autowired
    private Configuration configuration;

    public void doSomethingWithSomeValue() {
        System.out.println(configuration.someValue);
    }
}

当然上面的代码会失败,因为Fetcher 不是Spring Bean(我没有添加@Component/@Service/@Repository 到它)。我的问题是,是否有可能在 Fetcher 中获得 someValue 而无需使其成为 Spring Bean?

【问题讨论】:

标签: java spring spring-boot


【解决方案1】:

不,是的。

不,因为这就是 Spring 和依赖注入的全部思想。您必须使用可以访问 Spring ApplicationContext 的东西。

是的,因为您可以使用发布-订阅模式,或者您可以将一些上下文感知 bean 设置为单例,并让它们公开所有必要的属性。但这只是对可以访问 Spring 上下文的对象的委托。打个比方:这不是犯罪,它只是卖武器,然后给钱给会开枪的人:)

【讨论】:

    猜你喜欢
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 2017-10-09
    • 1970-01-01
    相关资源
    最近更新 更多