Spring:@Value 与@Autowired
Spring: @Value vs. @Autowired
我在我正在处理的应用程序中遇到一些注入问题(使用 Spring 版本 3.1.2)。首先,我看到了很多这样的代码:
@Value("#{searchRequestBean}")
private SearchRequest searchRequest;
@Value("#{searchResponseBean}")
private SearchResponse searchResponse;
@Autowired
private SavedSearchService service;
这三个中的每一个似乎都具有将指定的 bean/service 自动装配到 class 中的效果。我不明白的是,在这些情况下 @Value
和 @Autowired
有什么区别?我在网上找到的每个示例似乎都使用 @Value
从属性文件中注入值。在这种情况下,SearchResponse
和 SearchRequest
是抽象的 classes.
我希望更好地理解这一点将帮助我解决我在使用会话 bean 时遇到的一些问题。
@Value
可用于注入默认值。一个很好的例子是将 String
的默认值注入 属性 文件的值。在您的示例中,@Value
用于将 class 的默认值设置为 Spring 托管 bean。
@Autowired
不能用于第一个示例:它不是 属性 文件感知的。对于 bean 的 DI,@Autowired
仅 。它比 @Value
更具体,但您可以使用 @Value
来做同样的事情。
@Value
有一个很好的教程:http://www.mkyong.com/spring3/spring-value-default-value/
我在我正在处理的应用程序中遇到一些注入问题(使用 Spring 版本 3.1.2)。首先,我看到了很多这样的代码:
@Value("#{searchRequestBean}")
private SearchRequest searchRequest;
@Value("#{searchResponseBean}")
private SearchResponse searchResponse;
@Autowired
private SavedSearchService service;
这三个中的每一个似乎都具有将指定的 bean/service 自动装配到 class 中的效果。我不明白的是,在这些情况下 @Value
和 @Autowired
有什么区别?我在网上找到的每个示例似乎都使用 @Value
从属性文件中注入值。在这种情况下,SearchResponse
和 SearchRequest
是抽象的 classes.
我希望更好地理解这一点将帮助我解决我在使用会话 bean 时遇到的一些问题。
@Value
可用于注入默认值。一个很好的例子是将 String
的默认值注入 属性 文件的值。在您的示例中,@Value
用于将 class 的默认值设置为 Spring 托管 bean。
@Autowired
不能用于第一个示例:它不是 属性 文件感知的。对于 bean 的 DI,@Autowired
仅 。它比 @Value
更具体,但您可以使用 @Value
来做同样的事情。
@Value
有一个很好的教程:http://www.mkyong.com/spring3/spring-value-default-value/