春天:@Value vs. @Autowired

Jef*_*ine 2 java spring dependency-injection autowired spring-annotations

我正在处理的应用程序中使用注入有一些问题(使用Spring Version 3.1.2).首先,我看到很多这样的代码:

@Value("#{searchRequestBean}")
private SearchRequest searchRequest;

@Value("#{searchResponseBean}")
private SearchResponse searchResponse;

@Autowired
private SavedSearchService service;
Run Code Online (Sandbox Code Playgroud)

这三个中的每一个似乎都具有将指定的bean/service自动装配到类中的效果.我不明白的是,有什么之间的区别@Value,并@Autowired在这些情况下?我在网上找到的每个例子似乎都用于@Value从属性文件中注入值.在这种情况下,SearchResponse并且SearchRequest是抽象类.

我希望更好地理解这一点将有助于我解决我对Session bean的一些问题.

Dan*_*lan 9

@Value可用于注入默认值.一个很好的例子是将默认值a注入String属性文件的值.在您的示例中,@Value用于将类的默认值设置为Spring托管bean.

@Autowired不能用于第一个例子:它不是属性文件识别. @Autowired唯一一个bean的DI.它比具体更具体@Value,但你可以@Value用来做同样的事情.

这是一个很好的教程@Value:http://www.mkyong.com/spring3/spring-value-default-value/