在spring-boot中,是否可以在不成为spring bean的情况下获得属性?

时间:2017-10-20 05:16:44

标签: java spring spring-boot

我有一个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。我的问题是,是否可以在someValue中获取Fetcher而不使其成为Spring Bean?

1 个答案:

答案 0 :(得分:3)

不,是的。

不是因为这是Spring和依赖注入的全部概念。您必须使用可以访问Spring ApplicationContext的内容。

是的,因为您可以使用发布 - 订阅模式,或者您可以将一些上下文感知bean作为单例,并让它们公开所有必需的属性。但它只是委托给可以访问Spring上下文的对象。打个比方:它不是犯罪,它只是卖武器并给那些能够实际拍摄的人捐钱:))