我有一个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?
答案 0 :(得分:3)
不,是的。
不是因为这是Spring和依赖注入的全部概念。您必须使用可以访问Spring ApplicationContext的内容。
是的,因为您可以使用发布 - 订阅模式,或者您可以将一些上下文感知bean作为单例,并让它们公开所有必需的属性。但它只是委托给可以访问Spring上下文的对象。打个比方:它不是犯罪,它只是卖武器并给那些能够实际拍摄的人捐钱:))