|
|
|
Scope("prototype") не работает: в Set-свойство род-ля добавляет 5 раз один и тот же detail
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Есть вот такой parent-detail.xml: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. И следующие классы для проверки: Код: java 1. 2. 3. 4. 5. 6. 7. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Если это всё откомпилять и запустить, то будет видно, что в свойство parent.details добавился hashset только из одного элемента: Код: plaintext 1. 2. 3. 4. 5. 6. Если же в XML'e закомментарить "<bean id="detail" class="Detail" />" и раскомментарить "<bean id="detail" class="Detail" scope="prototype" />", то будет всё ОК: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Что не хватает в исходном варианте, чтобы он добавлял в набор деталек не по принципу singleton'а, а как запрашивается - т.е. на каждый вызов details.add( p.get() ) чтобы был добален новый инстанс ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2014, 21:09 |
|
||
|
Scope("prototype") не работает: в Set-свойство род-ля добавляет 5 раз один и тот же detail
|
|||
|---|---|---|---|
|
#18+
Разобрался, кажись. Надо было: 1) обязательно засунуть все классы в пакет; 2) поменять context:annotation-config на context:component-scan. В итоге, вот работающий вариант: java Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. XML "parent-detail-component-scan.xml" Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. PS. Не понял причину, но "import javax.inject.*;" не прокатит, если не указать при компиляции в classpath каталог, где есть какой-нить javaee.jar; у мну оказался глассфишный, с ним компиляция прокатила. Странно. PPS. Как этому context:comp-scan'у задать пакет "по-умолчанию", т.е. когда классы не в пакете ? Вот такое: base-package="" - компилирует, но на самом деле не работает. (да, я знаю, что всё надо раскладывать по пакетам; просто интересно стало, можно ли вообще сделать это без них :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2014, 23:28 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38820016&tid=2126170]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
143ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
2ms |
| others: | 208ms |
| total: | 413ms |

| 0 / 0 |
