Skip to content

Commit 0bce0d7

Browse files
committed
Add StockAllInjectRepository.java
1 parent 1c545a3 commit 0bce0d7

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
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

Comments
 (0)