본문 바로가기

Backend/Spring | SpringBoot

[TIL] 회고 1

반응형

1. 파일 업로드 및 미리보기를 구현하면서 정적자원관리 => 별도로 (왜냐하면 보안은 중요하니까)

그래서 MVC에서 별도로 ResourceHandler속에 넣어줌

// application.yml에서 path정보 등록
path:
  upload:
    dev: /home/download/data/upload/img/
    real: upload/img
  download: /home/download/data/
  config: file:/home/download/data/upload/

// WebMvcConfiguration에서 관리
...
@Value("${path.config}")
private String pathConfig;	

...
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
	registry.addResourceHandler("/**").addResourceLocations("classpath:/static/").setCacheControl(CacheControl.maxAge(10, TimeUnit.MINUTES))
		.resourceChain(true).addResolver(new VersionResourceResolver().addFixedVersionStrategy(this.appVersion, "/**"));
	registry.addResourceHandler("/upload/**").addResourceLocations(this.pathConfig);
	registry.addResourceHandler("/.well-known/**").addResourceLocations("file:/home/sample/www/projectname/ROOT/WEB-INF/classes/static/.well-known/");
}

 

apache구성등은 모르나 이렇게 설정하고 /upload/img/{이하경로}/{파일명.확장자}를 입력했을때 접근이 가능했다.

 

2. 순환참조

늘상 하던 방식으로 선언하니 Bean을 사용하면 순환참조에 걸리고 구조체를 사용하자니 Bean등록이 안되었다고 에러가 발생했다.

그래서 사용한 방식

@Bean어노테이션으로 Bean을 등록하지 않고 코드를 분리해서 @Component어노테이션으로 따로 등록해주었다.

@RequiredArgsConstructor
@EnableMethodSecurity
@Configuration
@Slf4j
public class SpringSecurityConfig2{
  private final AuthenticationConfiguration authenticationConfiguration;
  private final CustomOAuth2UserService customOAuth2UserService;
  private final JwtAuthenticationProvider jwtAuthenticationProvider;
  
  ...
  
  @Autowired
  public void configureAuthentication(AuthenticationManagerBuilder builder){
    System.out.println("+++++++++++++ provider injection");
    builder.authenticationProvider(jwtAuthenticationProvider);
  }

  ...
  
//  // 코드 분리함
//  @Bean
//  public JwtAuthenticationProvider jwtAuthenticationProvider(CustomOAuth2UserService customOAuth2UserService){
//  	return new JwtAuthenticationProvider(customOAuth2UserService);
//  }


// 분리 코드
@Slf4j
@Component
public class JwtAuthenticationProvider implements AuthenticationProvider {
	...
}

 

반응형

'Backend > Spring | SpringBoot' 카테고리의 다른 글

[Oauth2] Implicit Grant vs Authorization Code Grant  (0) 2024.06.20
[OAuth2] 회고4  (0) 2024.06.18
[OAuth2] 회고3  (0) 2024.06.14
[Oauth2] 회고2  (0) 2024.06.12
[Oauth2] 회고 1  (0) 2024.06.11