LINUX.ORG.RU

Autowired в кастомном логин модуле

 , ,


0

1

Сделал свой LoginModule для wildfly'я. Хочу внутри использовать JpaRepository спринговый. Как это возможно осуществить?

    @Autowired
    private UserDao userDao;
так поле не заполняется.

LoginModule:



@Component
@Scope("prototype")
public class LoginModule extends AbstractServerLoginModule {

    @Autowired
    private UserDao userDao;

    public void initialize(Subject subject, CallbackHandler callbackHandler,
                           Map sharedState,
                           Map options) {
        super.initialize(subject, callbackHandler, sharedState, options);
    }

    @Override
    public boolean login() throws LoginException {
       ....
    }
}


Хочу внутри использовать JpaRepository спринговый

Хитрый какой, а контекст спринговый кто будет инициализировать?

Deleted ()
Ответ на: комментарий от kote

Скорее всего там настроено так, что поиск аннотации ведётся только в определённых пакетах (и LoginModule в них не входит).

Надо смотреть параметры контекста. <context:component-scan> насколько я помню

alchemist ()
Последнее исправление: alchemist (всего исправлений: 1)
Ответ на: комментарий от alchemist

Вроде есть оно, но не помогает. Подозреваю потому что оно создает его через Class.forName.

сделал так:

    ApplicationContext ctx = new ClassPathXmlApplicationContext("META-INF/base-context.xml");
        userDao = ctx.getBean(UserDao.class);

вроде заработало

kote ()
Ответ на: комментарий от kote

А если контекст уже инициализирован в другом месте? Хз как это проявится на практике, но я б такого не делал.

Чтобы получить текущий контекст есть интерфейс ApplicationContextAware, но все это сильно напоминает костыли, не должно так быть)

Хотя если подумать - в этом случае решение через ApplicationContextAware будет наиболее правильным, пусть спецы по спрингу меня поправят

alchemist ()
Последнее исправление: alchemist (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.