1+ package spring .oldboy .repository ;
2+
3+ /*
4+ Применение аннотации @Autowired, @Qualifier, @Value
5+ над внедряемыми полем и коллекциями
6+ */
7+
8+ import org .springframework .beans .factory .annotation .Autowired ;
9+ import org .springframework .beans .factory .annotation .Qualifier ;
10+ import org .springframework .beans .factory .annotation .Value ;
11+ import spring .oldboy .pool .StarterConnectionPool ;
12+
13+ import java .util .List ;
14+
15+ public class StockAllInjectRepository {
16+ /*
17+ Аннотация @Autowired в Spring Framework используется для автоматического
18+ связывания компонентов bean-a между собой. Она позволяет автоматически
19+ настраивать свойства bean-a и методы, упрощая тем самым процесс инъекции
20+ зависимостей.
21+
22+ В нашем application.xml, как минимум два однотипных bean-a:
23+
24+ <bean id="pool2" name="poolchic" class="spring.oldboy.pool.StarterConnectionPool"/>
25+ <bean id="poolStarter" name="poolGate" class="spring.oldboy.pool.StarterConnectionPool"/>
26+
27+ Чтобы решить проблему неопределенности при выборе bean-a, можно использовать
28+ аннотацию @Qualifier. Она позволяет указать, какой bean следует использовать
29+ при внедрении. В этом примере, Spring внедрит бин с именем «pool2».
30+
31+ То что мы пытались сделать аннотацией @InjectBean делают:
32+ - аннотация @Resource(name = "poolStarter") из пакета javax.annotation;
33+ - @Autowired и @Qualifier("poolStarter") из org.springframework.beans.factory.annotation
34+ */
35+
36+ /*
37+ Во всех случаях, если у нас в Spring контейнере хранятся более одного однородного
38+ bean-a, рекомендуется их именовать и явно прописывать имя используемого для внедрения,
39+ например: @Resource(name = "poolStarter")
40+ */
41+ @ Autowired
42+ /* Явно указываем имя внедряемого bean-a */
43+ @ Qualifier ("poolStarter" )
44+ private StarterConnectionPool starterConnectionPool ;
45+
46+ /* Мы можем внедрять целые коллекции и поля, естественно над параметрами конструктора */
47+ @ Autowired
48+ private List <StarterConnectionPool > pools ;
49+ /* Использовать при внедрении EL или SPEL */
50+ @ Value ("${db.pool.size}" )
51+ private Integer poolSize ;
52+
53+ /* Для просмотра */
54+ public StarterConnectionPool getStarterConnectionPool () {
55+ return starterConnectionPool ;
56+ }
57+
58+ public List <StarterConnectionPool > getPools () {
59+ return pools ;
60+ }
61+
62+ public Integer getPoolSize () {
63+ return poolSize ;
64+ }
65+ }
0 commit comments