2016-04-25 2 views
2

У меня возникла проблема с автопостановкой компонента в класс утилиты. Первоначально класс утилиты содержал в себе статические методы, но затем я просто сделал их экземплярами.Невозможно автоустанавливать компонент в класс утилиты

Я определил класс утилиты с @Component и в классе положить в

Пакет класс утилита находится в находится под указанной родительской директории для @ComponentScan, где значение = "top-level-directory", который также содержит пакеты для всех других компонентов, которые были добавлены в систему.

Чтобы получить класс утилиты для запуска, мне пришлось передать ExistingComponent в конструктор для класса утилиты.

Использование весны 4.1.6.

Это, вероятно, что-то основное, но это не щелчок. Что мне здесь не хватает?

Спасибо.

UPDATE 1

Класс, который звонит класс утилиты выглядит следующим образом:

class UsingClass { 
@Autowired 
MyUtilityClass myUtilityClass 
... 
    def method1() { 
    String variable1 = "some data" 
    myUtilityClass.utilityMethod(variable1) 
    ... 
    } 
} 

Изначально у меня был внутренний вспомогательный метод как статические и пытался использовать класс утилиты без автоматического связывания Это.

+0

Показать класс, в котором вы вызываете методы на MyUtilityClass. – chrylis

+0

Что касается других классов в одном пакете. они поддерживают autowire – Priyamal

+0

Отредактируйте вызывающий класс в вопросе. – chrylis

ответ

1

У вас есть это где-то внутри файлов конфигурации XML-компонентов?

<context:component-scan base-package="com.your.package" /> 

базовый пакет указывает, где ваши компоненты сохраняются.

Это позволяет Spring сканировать пакет так, чтобы он мог найти бобы, аннотированные @Component.

Об этом объясняется более подробно here.

+0

Не использовать XML. Используя аннотацию ** @ ComponentScan **, атрибут _value_ устанавливается в каталог выше каталога «util» и выше других каталогов компонентов. Т.е., если _value _ = "com.my.top-level-dir", то пакеты, которые были автообновлены, находятся в пакетах "com.my.top-level-dir.pkg1", "com.my.top-level-dir. pkg2 "и т. д. Класс утилиты находится в пакете« com.my.top-level-dir.util ». – Les

+0

Я вижу. Да, я не был уверен, что вы управляете полностью аннотацией. У вас по крайней мере есть тег, обработанный аннотацией, для правильной работы аннотаций? Я полагаю, что, по крайней мере, это необходимо для @Autowired. Я рассмотрю это больше сегодня и сообщаю о любых выводах. Спасибо за обновление! –

Смежные вопросы