2017-10-20 91 views
0

我有一個Configuration.class,它從application.properties獲取屬性。在spring-boot中,是否有可能獲得屬性而不是Spring bean?

@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?

+0

也許,將配置文件讀入地圖並從那裏獲取? –

+0

看看https://stackoverflow.com/a/18486178/1032167和https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/ApplicationContextAware.html – varren

回答

3

不,是的。

不是因爲這是Spring和依賴注入的整個想法。你必須使用能夠訪問Spring ApplicationContext的東西。

是的,因爲你可以使用發佈 - 訂閱模式,或者你可以讓你的一些情境感知bean成爲單例,並讓它們公開所有必要的屬性。但它只是代表訪問Spring上下文的對象。打個比方:這不是犯罪,它只是出售武器,並給予實際開槍的人的錢:)

相關問題