1. 프로젝트 Maven clean 후 maven install 하여 target 폴더 재생성

 

2. target 폴더의 class 파일 위치 확인하여 새로 생성된 파일을 서버에 업로드

scp ./File.class ec2-user@111.111.00.11:~/home/ROOT/WEB-INF/classes/views

 

3. 톰캣 중지 후 재실행

/stop_server.sh
/start_server.sh

 

 

 

+ 톰캣 실행여부 확인 : ps -eaf | grep tomcat

+ 포트 실행여부 확인 : netstat -tnl

 

 

https://archive.apache.org/dist/maven/maven-3/

 

Index of /dist/maven/maven-3

 

archive.apache.org

 

 

<!-- swagger -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>3.0.0</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

@Configuration
class SwaggerConfig {  // {domain}/swagger-ui

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }


    public ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("SpringBoot Practice Rest API Documentation")
                .description("springboot rest api practice.")
                .version("0.1")
                .build();
    }   

}

application.propertis

# swagger
spring.mvc.pathmatch.matching-strategy=ant-path-matcher

 

Spring Boot 프로젝트에서 Spring Security를 설정하다 보면 다음과 같은 에러를 만날 수 있다.

An AuthenticationManager is required. Consider defining a bean of type AuthenticationManager. 
... needs to have a non-void return type!

 

 

원인

1. SecurityFilterChain 설정 문제

  • @Bean으로 등록하는 SecurityFilterChain 메서드는 반드시 SecurityFilterChain 타입을 반환해야 한다.
  • 반환 타입이 void 또는 잘못된 타입인 경우 에러가 발생한다.

2. AuthenticationManager 설정 문제

  • AuthenticationManager를 빈으로 등록할 때도 정확한 반환 타입을 지정해야 한다.

 

해결 방법

1. SecurityFilterChain 반환 타입 확인

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    http
        .authorizeHttpRequests(auth -> auth
            .requestMatchers("/public/**").permitAll()
            .anyRequest().authenticated()
        )
        .formLogin()
        .and()
        .cors(withDefaults())
        .httpBasic();
    return http.build();  // 이 부분을 반환하는 지 확인해야 함
}

 

2. Spring Boot 버전 확인

  • 최신 버전의 Spring Boot에서는 Security 설정 방식이 변경되었을 수 있으므로 공식문서 확인하여 변경한다. 

+ Recent posts