emrhssla
624
2022-05-18 19:15:36
3
124

Spring Security 에서 Bean 등록 실패..


아래처럼 코드를 `import org.springframework.web.filter.CorsFilter;`를 통해 정상적으로 빈 등록을 했는데 계속 아래처럼 오류가 뜨네요..


package com.example.jwttutorial.config;

import org.springframework.web.filter.CorsFilter;
...


@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    private final CorsFilter corsFilter;
    ...

    public SecurityConfig(
            CorsFilter corsFilter,
            ...
    ) {
        ...
    }

    

    
    }
}
2022-05-18 19:09:09.191 ERROR 58636 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 1 of constructor in com.example.jwttutorial.config.SecurityConfig required a bean of type 'org.springframework.web.filter.CorsFilter' that could not be found.


Action:

Consider defining a bean of type 'org.springframework.web.filter.CorsFilter' in your configuration.




또, Application 클래스에 


@SpringBootApplication(scanBasePackages = {"org.springframework.web.filter.CorsFilter"})를 붙이면 되네요..


0
  • 답변 3

  • 한국은역시자바
    1k
    2022-05-18 22:09:19
    SecurityConfig 클래스에 @Configuration 어노테이션이 누락되셔서 그렇습니다.
  • 트리아스
    104
    2022-05-19 10:00:43

    import문이 있다고 빈 등록이 되는 것이 아닙니다.

    스프링이 시작할 때 @Component, @Bean이 붙은 클래스와 메소드를 스캔해서 객체 생성 후 빈으로 등록합니다.

      

    package com.example.demo.config;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.cors.CorsConfiguration;
    import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
    import org.springframework.web.filter.CorsFilter;
    
    @Configuration
    public class BeanConfig {
    
        @Bean
        public CorsFilter corsFilter() {
            // 소스코드 출처
            //http://useof.org/java-open-source/org.springframework.web.filter.CorsFilter
            // Example 3
            UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
            CorsConfiguration config = new CorsConfiguration();
            config.setAllowCredentials(true);
            config.addAllowedOrigin("*");
            config.addAllowedHeader("*");
            config.addAllowedMethod("OPTIONS");
            config.addAllowedMethod("GET");
            config.addAllowedMethod("POST");
            config.addAllowedMethod("PUT");
            config.addAllowedMethod("DELETE");
            source.registerCorsConfiguration("/**", config);
            return new CorsFilter(source);
        }
    }


    이런 식으로 작성자님이 원하는 방향으로 수정해서 사용하시면 될 것 같습니다.

  • emrhssla
    624
    2022-05-19 10:17:31
    감사합니다들!!! 덕분에 해결했습니다
  • 로그인을 하시면 답변을 등록할 수 있습니다.