Ошибка при создании bean-компонента с именем projectingArgumentResolverBeanPostProcessor.

Я настраиваю веб-безопасность в своем проекте, но вижу ошибку. это ошибка

моя треска:

} Класс userSecurity:

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter{
    @Autowired
    private Environment env;
    @Autowired
    private UserSecurityService usersecurityservice;
    private BCryptPasswordEncoder passwordencoder(){
        return SecurityUtility.passwordEncoder();
    }
    private static final String[]PUBLIC_MATCHES = {
            "/css/**",
            "/js/**",
            "/img/**",
            "/signUp",
            "/",
            "/newUser",
            "/forgetPassword",
            "/login",
            "/fonts/**",
            "/bookshelf/**",
            "/bookDetail/**",
            "/hours",
            "/faq",
            "/searchByCategory",
            "/searchBook"

    };
@Override
protected void configure(HttpSecurity   http)throws Exception{
    http
    .authorizeRequests().
    /*antMatchers("/**").*/
    antMatchers(PUBLIC_MATCHES).
    permitAll().anyRequest().authenticated();

http
    .csrf().disable().cors().disable()
    .formLogin().failureUrl("/login?error")
    .defaultSuccessUrl("/")
    .successForwardUrl("/login")
    .and()
    .logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
    .logoutSuccessUrl("/?logout").deleteCookies("remember-me").permitAll()
    .and()
    .rememberMe();

}
@Autowired
public void configureGlobal (AuthenticationManagerBuilder auth) throws Exception{
    auth.userDetailsService(usersecurityservice).passwordEncoder(passwordencoder());
}

Когда я удаляю программу аннотации @EnableGlobalMethodSecurity, я работаю правильно, я использовал эту кодировку раньше, и она работала правильно.

@Service
public class UserSecurityService implements UserDetailsService {

    @Autowired()
    private UserRepository userRepository;

public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
    // TODO Auto-generated method stub
    try{

    }catch(Exception ex){
        System.out.println("Error acoured hear:");
    }
    User user=userRepository.findByUsername(username);
    if(null==user){
        throw new UsernameNotFoundException("Username not found");
    }
    return user;
}

Вы недавно обновляли весну? В предыдущих версиях было нормально иметь нулевой

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter{
    @Autowired
    private Environment env;
    @Autowired
    private UserSecurityService usersecurityservice;
    private BCryptPasswordEncoder passwordencoder(){
        return SecurityUtility.passwordEncoder();
    }
    private static final String[]PUBLIC_MATCHES = {
            "/css/**",
            "/js/**",
            "/img/**",
            "/signUp",
            "/",
            "/newUser",
            "/forgetPassword",
            "/login",
            "/fonts/**",
            "/bookshelf/**",
            "/bookDetail/**",
            "/hours",
            "/faq",
            "/searchByCategory",
            "/searchBook"

    };
@Override
protected void configure(HttpSecurity   http)throws Exception{
    http
    .authorizeRequests().
    /*antMatchers("/**").*/
    antMatchers(PUBLIC_MATCHES).
    permitAll().anyRequest().authenticated();

http
    .csrf().disable().cors().disable()
    .formLogin().failureUrl("/login?error")
    .defaultSuccessUrl("/")
    .successForwardUrl("/login")
    .and()
    .logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
    .logoutSuccessUrl("/?logout").deleteCookies("remember-me").permitAll()
    .and()
    .rememberMe();

}
@Autowired
public void configureGlobal (AuthenticationManagerBuilder auth) throws Exception{
    auth.userDetailsService(usersecurityservice).passwordEncoder(passwordencoder());
}
, но теперь они добавили эта проверка, если у вас нет хотя бы одного источника метаданных безопасности метода включены, они генерируют исключение, которое вы получаете («В составе всей конфигурации глобального метода фактически не была активирована поддержка аннотаций»). Это случилось со мной, когда я обновился с весны 5.0.7 до 5.1.5. Вот проблема, в которой обсуждалось это изменение.


person amir    schedule 06.04.2019    source источник


Ответы (2)


Чтобы исправить это, либо включите один из источников метаданных в свойствах аннотации @EnableGlobalMethodSecurity, либо, если вы, как и я, используете какой-то GlobalMethodSecurityConfiguration, убедитесь, что метод customMethodSecurityMetadataSource возвращает not-null

У вас возникла эта проблема из-за неправильной аннотации. Вы должны добавить это так: MethodSecurityMetadataSource

person Hilikus    schedule 13.06.2019
comment
Это сработало, но не могли бы вы рассказать, почему это работает? - person გენო მუმლაძე; 06.01.2021

Это решение!

person Bisola Adeniyi    schedule 10.07.2020
comment
org.springframework.beans.factory.BeanCreationException: Ошибка при создании bean-компонента с именем 'projectingArgumentResolverBeanPostProcessor', определенным в ресурсе пути к классу [org / springframework / data / web / config / ProjectingArgumentResolverRegistrar.class]: BeanPostProcessor не удалось создать экземпляр класса BeanPost; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания bean-компонента с именем «metaDataSourceAdvisor»: не удается разрешить ссылку на bean-компонент «methodSecurityMetadataSource» при установке аргумента конструктора; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем 'methodSecurityMetadataSource', определенным в ресурсе пути к классу [org / springframework / security / config / annotation / method / configuration / GlobalMethodSecurityConfiguration.class]: создание экземпляра компонента через factory метод не удался; вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.security.access.method.MethodSecurityMetadataSource]: фабричный метод 'methodSecurityMetadataSource' вызвал исключение; вложенное исключение - java.lang.IllegalStateException: в составе всей конфигурации глобального метода поддержка аннотаций не была фактически активирована в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory) ~ [spring: beans -5.1.5.RELEASE.jar: 5.1.5.RELEASE] в org.springframework.beans.factory.support.AbstractBeanFactory.lambda $ doGetBean $ 0 (AbstractBeanFactory.java:320) ~ [spring-beans-5.1.5.RELEASE .jar: 5.1.5.RELEASE] в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:222) ~ [spring-beans-5.1.5.RELEASE.jar: 5.1.5.RELEASE] в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:318) ~ [spring-beans-5.1.5.RELEASE.jar: 5.1.5.RELEASE] в org.springframework.beans.factory. support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:204) ~ [spring-beans-5.1.5.RELEASE.jar: 5.1.5.RELEASE] в org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors (PostProcessorRegistrationDelegate.java:240) ~ [spring-context-5.1.5.RELEASE.jar: 5.1.5.RELEASESpring. context.support.AbstractApplicationContext.registerBeanPostProcessors (AbstractApplicationContext.java:721) ~ [spring-context-5. 1.5.RELEASE.jar: 5.1.5.RELEASE] в org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:534) ~ [spring-context-5.1.5.RELEASE.jar: 5.1.5.RELEASE ] в org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh (ServletWebServerApplicationContext.java:142) ~ [spring-boot-2.1.3.RELEASE.jar: 2.1.3.RELEASE] в org.springframe .SpringApplication.refresh (SpringApplication.java:775) [spring-boot-2.1.3.RELEASE.jar: 2.1.3.RELEASE] в org.springframework.boot.SpringApplication.refreshContext (SpringApplication.java:397) [spring- boot-2.1.3.RELEASE.jar: 2.1.3.RELEASE] в org.springframework.boot.SpringApplication.run (SpringApplication.java:316) [spring-boot-2.1.3.RELEASE.jar: 2.1.3. RELEASE] в org.springframework.boot.SpringApplication.run (SpringApplication.java:1260) [spring-boot-2.1.3.RELEASE.jar: 2.1.3.RELEASE] в org.springframework.boot.SpringApplication.run (SpringAppl ication.java:1248) [spring-boot-2.1.3.RELEASE.jar: 2.1.3.RELEASE] в com.supermarket.SupermarketApplication.main (SupermarketApplication.java:19) [классы /: na] - person A.R.H; 07.08.2020