|
Подскажите как оптимизировать код
|
|||
---|---|---|---|
#18+
Суть такая: есть несколько csv файлов, информацию из которых нужно засунуть в БД. Реализовал это с помощью spring-batch, но как мне кажется саму реализацию можно сделать красивее.. Надеюсь на ваши подсказки. 1. Batch конфиг: Код: 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. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80.
2. Абстракция для создания Step'ов: Код: 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.
3. Один из классов, который эту абстракцию реализует (остальные аналогичные): Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
То-есть по хорошему как минимум создание step'ов хотелось бы засунуть внутрь соответствующего класса, но так-как я не настолько глубоко понимаю, как работает спринга, то это у меня не получается. Все попытки сводились к тому, что вот это: Код: java 1. 2. 3. 4. 5. 6. 7. 8.
эти step'ы в итоге не видит.. Надеюсь на любые подсказки, спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2021, 11:30 |
|
Подскажите как оптимизировать код
|
|||
---|---|---|---|
#18+
bobo96 То-есть по хорошему как минимум создание step'ов хотелось бы засунуть внутрь соответствующего класса Код: java 1. 2. 3. 4. 5. 6. 7.
нужно ли подобный код еще выделять в отдельный метод/класс...ну не знаю, при 3 ридерах я бы этого не делал, но если там реально меняется только список колонок, то можно написать метод для создания ридера, передавая колонки как параметр, но не создавать для этой ерунды отдельный класс - там по сути нет кода, только конфигурация - так пусть она и остается в классе конфигурации. Тоже касается Writer - там точно так же есть JdbcBatchItemWriterBuilder который делать запись компактней Код: java 1. 2. 3. 4. 5.
снова таки, заслуживает ли подобный примитив выделения в отдельный код? имхо нет. По-крайней мере не на 3 случаях использования. На 10-20 я бы еще подумал. Рано или поздно логика усложняется и код придется адаптировать под изменяющиеся условия. Тоже касается засовывания создания step-ов в классы. я бы написал так (для остальных шагов аналогично) Код: 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.
я выделил повторяющийся код в отдельный метод, но это хорошо работает только пока код идентичен - как только у ридеров/врайтеров пойдут свои особые случаи, когда все не ограничивается только набором колонок и sql, оно будет скорее мешать, чем помогать, но в простом примере ... ну пусть будет, по-крайней мере в пределах одного конфига для одного конкретного Job ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2021, 20:46 |
|
|
start [/forum/topic.php?fid=59&gotonew=1&tid=2120289]: |
0ms |
get settings: |
23ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
9ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
100ms |
get tp. blocked users: |
2ms |
others: | 2670ms |
total: | 2881ms |
0 / 0 |