Может ли источник @Autowired bean быть статичным? [Дубликат]

Встроенный zip делает именно то, что вы хотите. Если вы хотите использовать те же самые итерации вместо списков, вы можете посмотреть на itertools.izip, который делает то же самое, но дает результаты по одному.

82
задан Ashu 7 June 2012 в 20:24
поделиться

4 ответа

Поскольку использование статических полей стимулирует использование статических методов. А статические методы - зло. Основной целью инъекции зависимостей является предоставление контейнеру объектов для вас и их проводка.

После того, как вы начнете использовать статические методы, вам больше не нужно создавать экземпляр объекта, а тестирование намного сложнее. Также вы не можете создавать несколько экземпляров данного класса, каждый из которых имеет различную зависимость, которая вводится (потому что поле неявно разделяется и создает глобальное состояние - также зло).

61
ответ дан Tomasz Nurkiewicz 27 August 2018 в 11:06
поделиться

Поскольку, когда загрузчик классов загружает статические значения, контекст Spring еще не загружен. Таким образом, загрузчик классов не будет правильно вводить статический класс в bean-компонент и не будет работать.

113
ответ дан Andrea T 27 August 2018 в 11:06
поделиться

Благодаря этому решению вы можете авторизовать статические поля весной.

@Component
public class TestClass {

    private static Test test;

    @Autowired
    public void setTest(Test test) {
        TestClass.test = test;
    }
}
9
ответ дан Parth Solanki 27 August 2018 в 11:06
поделиться

Согласно концепции ООП, это будет плохой дизайн, если статические переменные будут автообновлены.

Статическая переменная не является свойством Object, но является свойством класса. Пружинная автоматическая проводка выполняется на объектах, и это делает дизайн чистым, на мой взгляд. Вы можете развернуть объект с автоматическим подключением bean как singleton и достичь того же, что и его статический.

12
ответ дан Tom11 27 August 2018 в 11:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: