В моем проекте 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
@ M.Deinum, спасибо. Раньше я также пробовал внедрить UserDetailsService. но столкнулся с той же проблемой. Вот почему попробовал тот, который указан в коде.
Вам нужен UserService (я предполагал, что вы расширили базовые классы Spring Security), а не UserDetailsService или UserServiceImpl. Снова программа для интерфейса, поэтому вы определяете тех, кто в первую очередь имеет контракт, чтобы использовать и программировать против.




попробуйте добавить в свою конфигурацию 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.
Можете ли вы сказать мне имя пакета, в котором вы настроили фабрику сеансов?
Вам также необходимо добавить <context: annotation-config> в ваш XML-файл. Я отредактировал свой ответ.
SessionFactory настроен в spring-servlet.xml, который находится внутри папки WEB-INF. Он работал нормально до добавления @ComponentScan в класс java conf. Также все основные вещи уже сделаны, например: <context:annotation-config /> <context:component-scan base-package = "com.crud" /> <mvc:annotation-driven />
Можете ли вы поделиться своим spring-servlet.xml?
Программа для интерфейсов вместо конкретных классов. Вероятно, вам следует ввести
UserDetailsService.