Как сделать работу @Autowired в обычном классе?

Вот что у меня есть:

@Component class FooController { fun createFoo() { val foo = FooEntity() foo.name = "Diogo" fooRepository.save(foo) } @Autowired internal lateinit var fooRepository: FooRepository } 

При попытке вызвать createFoo() я получаю следующую ошибку:

kotlin.UninitializedPropertyAccessException: lateinit property fooRepository has not been initialized

Я думал, что добавление @Component наверху сделает мой класс @Autowired к весне и, следовательно, сделает работу @Autowired , но, может быть, я ошибся?

    Просто добавить @Component в класс недостаточно.

    1) Когда вы используете @Component вы должны убедиться, что класс проверяется сканированием компонентов. Это зависит от того, как вы загружаете свое приложение, но вы можете использовать <context:component-scan base-package="com.myCompany.myProject" /> для конфигурации XML или @ComponentScan для настройки java.

    Если вы используете Spring boot – вам не нужно объявлять @ComponentScan самостоятельно, потому что @SpringBootApplication наследует его и по умолчанию проверяет все классы в текущем пакете и все его подпакеты.

    2) Вы должны получить компонент из весеннего контекста. Создание объекта с new не будет работать.

    В принципе, есть два способа получить компонент из контекста приложения:

    • Если у вас есть доступ к объекту ApplicationContext, вы можете сделать что-то вроде этого:

    ApplicationContext ctx = ...; MyBean mb = ctx.getBean(MyBean.class);//getting by type

    • Любой весенний боб, объявленный в контексте, может получить доступ к другим компонентам, использующим инъекцию зависимостей ( @Autowired )

    Поэтому я очень новичок в Spring и пытался вызвать FooController , создав экземпляр этого приложения через new а не @Autowire . Когда я добавил FooController в зависимость от класса, из которого он вызывался, он работал.

    Intereting Posts
    Конвертер Kotlin больше не работает для Android Studio 3.0 Можно ли применить одну аннотацию к нескольким целевым объектам в Котлин? Передача приложения в AndroidViewModel Что такое простой MapRowParser в Anko? KDoc: Вставить фрагмент кода Почему не будет код, который инициализирует свойство интерфейса переменной в компиляции блока init? Как добавить приложение create-react-kotlin-app в качестве модуля для проекта kotlin-multiplatform? Котлин || Как отличить идентификатор вида от onClick () как оператор switch в Android? Невозможно однозначно идентифицировать макет при добавлении вложенных фрагментов с помощью фрагментации запустить Android-версию 2.3.3 проект kotlin в android studio 3.0.1 после обновления Неразрешенная ссылка: kotlinx – Kotlin 1-0-0-rc-1036 Функция котлинской складчатости Ошибка переноса подпункта: com.android.dx.cf.code.SimException: local 0007: недействительный Kotlin – Как рекурсивно назвать лямбда-функцию Firebase Firestore как перечислить авторизованные документы?