Проблема с конфигурацией Spring MVC XML + Java

В моем проекте Spring MVC вся конфигурация mvc выполняется с использованием XML.

Теперь я пытаюсь интегрировать безопасность Spring и добавляю конфигурацию безопасности на основе аннотация (@EnableWebScurity и @Configuration), расширяющую WebSecurityConfigurerAdapter.

Является ли это возможным?

Моя проблема:

Всякий раз, когда я пытаюсь воспользоваться какой-либо зависимостью с автоматическим подключением в моем классе @EnableWebMvc, NoSuchBeanDefinitionException: No qualifying bean of type [com.crud.servicesimpl.UserServiceImpl]

Фрагменты кода:

SecurityConfig класс:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Autowired
    UserService userService;

Класс обслуживания:

@Service
public class UserServiceImpl implements UserService {

Исключение:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.crud.services.UserService] found for dependency [com.crud.services.UserService]: expected at least 1

Программа для интерфейсов вместо конкретных классов. Вероятно, вам следует ввести UserDetailsService.

M. Deinum 17.09.2018 09:56

@ M.Deinum, спасибо. Раньше я также пробовал внедрить UserDetailsService. но столкнулся с той же проблемой. Вот почему попробовал тот, который указан в коде.

Akash Mulik 17.09.2018 10:08

Вам нужен UserService (я предполагал, что вы расширили базовые классы Spring Security), а не UserDetailsService или UserServiceImpl. Снова программа для интерфейса, поэтому вы определяете тех, кто в первую очередь имеет контракт, чтобы использовать и программировать против.

M. Deinum 17.09.2018 10:10
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
117
2

Ответы 2

попробуйте добавить в свою конфигурацию xml: <context:component-scanbase-package = "..."> и <context:annotation-config> с уважением

Добавьте @ComponentScan (basePackages = {"добавьте сюда название пакета"})

 @Configuration
    @EnableWebSecurity
    @ComponentScan(basePackages = {"com.crud"})
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
        @Autowired
     UserService userService;
}

Также добавьте в свой xml файл.

@ComponentScan работает, но отменяет ли он мою конфигурацию XML? Потому что после его добавления возникает исключение No qualifying bean of type [org.hibernate.SessionFactory], поскольку мой bean-компонент SessionFactory настроен в файле xml conf.

Akash Mulik 17.09.2018 11:25

Можете ли вы сказать мне имя пакета, в котором вы настроили фабрику сеансов?

Pooja Aggarwal 17.09.2018 11:46

Вам также необходимо добавить <context: annotation-config> в ваш XML-файл. Я отредактировал свой ответ.

Pooja Aggarwal 17.09.2018 13:04

SessionFactory настроен в spring-servlet.xml, который находится внутри папки WEB-INF. Он работал нормально до добавления @ComponentScan в класс java conf. Также все основные вещи уже сделаны, например: <context:annotation-config /> <context:component-scan base-package = "com.crud" /> <mvc:annotation-driven />

Akash Mulik 18.09.2018 10:17

Можете ли вы поделиться своим spring-servlet.xml?

Pooja Aggarwal 18.09.2018 11:07

Другие вопросы по теме