본문 바로가기
회고

TIL_210701

코동이 2021. 7. 6.

1. Facts(사실, 객관)

- @Configuration vs @Component 차이

- 품격 Pageable Spring Boot에서 구현

- 회사 결제모듈 관련 공부

 

2. Feelings(느낌, 주관)

- 최근에 홈페이지 결제 수단이 나이스페이여서 해당 로직에 관심이 많습니다. 결제와 관련한 API를 어떻게 구성하고 사용하는지 확인하려고 했습니다. 문제는 결제가 홈페이지에만 구현하면 되는것이 아니라 내부 기간 시스템과 연동이 필요하기 때문에 상당히 많은 테이블과 내부 로직을 알아야 합니다. 하지만 테이블관리와 로직들이 정확히 관리되고 있지 않아서 스스로 계속 파고들면서 공부해야하는 상황입니다. 결제와 관련해서 청구테이블, 결제테이블, 상품테이블 등등 확인해야 할 곳이 많습니다

 

- aspect 설정을 다시 확인하면서 빈 등록을 복습했습니다. 회사에서는 xml 파일에 빈을 등록하다보니, 평소에 사용하였던 어노테이션을 이용한 등록을 해보고 싶었습니다. 그래서 xml도 해보고, 어노테이션으로도 해보면서 차이점에 대해 다시 한번 확인했습니다.

 

- spring boot에서 제공하는 Pageable을 통해 쉽게 페이징을 구현할 수 있는 편리함이 생겼습니다. 이전에 페이징관련 메서드를 다 만들고 하나씩 설정해주었지만 이제는 모두 구현이 되어있는것을 이용하면 됩니다!!!

 

3. Findings (배운 점)

 

- @Configuration과 @Component의 공통점은 둘 다 스프링 빈에 등록을 하기 위해 사용한다는 것입니다. 비교 대상도 약간 미묘한게 @Configuration은 내부에 @Component를 포함하고 있습니다.

@Configuration 공식문서

- 특히 주목해야 할 부분은 1개 혹은 그 이상의 @Bean 메서드를 설정하고 스프링 컨테이너에 의해 관리될 수 있다고 나와 있는 설명입니다. 즉, @Configuration과 @Bean을 등록한다는 점에서 밀접한 관계를 가집니다. ( 그렇다고 @Component가 @Bean 사용하지 못한다는 것은 아닙니다!! 공식문서에서 확인 가능합니다 )

 

- @Configuration은 외부 라이브러리나 내장 클래스를 @Bean으로 등록 시킬 때 많이 이용합니다.

@Component는 내, 외부적으로 가져와서 사용한 것 이외에 개발자가 만든 클래스를 등록할 때 사용합니다

@Configuration
@EnableAspectJAutoProxy
public class AopConfig {
	@Bean
	public ControllerAspect controllerAspect() {
		return new ControllerAspect();
	}
}

 

 

- @PageableDefault에서 direction은 정렬순서, size로 갯수, sort는 정렬기준입니다.

@GetMapping("/{id}/{menu}")
public MyPageGetResponseDto detail(
        @PageableDefault(direction = Sort.Direction.DESC, size = 12, sort = "id") Pageable pageable,
        @PathVariable Long id,
        @PathVariable String menu) {
    return myPageService.getMyPageInfo(id, menu, pageable);
}

홈페이지에서 page=2&size=20과 같은 형식으로 추가적인 url을 붙여주면 그에 맞게 DB에서 조회가 됩니다. 현재 설정은 default로 위처럼 되도록 했습니다.

 

Page<Item> sellPageItems = itemRepository.findAllBySellerId(id, pageable);

특이한 것은, 매개변수로 받은 Pageable을 그대로 Repository에서 조회할 때 넣어줍니다. JPA에서 해당 클래스를 자동으로 해결해줍니다. 대신 반환형이 일반적인 List가 아닌 Page이므로 꼭 리턴형을 변환해주는 것이 필요합니다.

 

4. Affirmation (자기 선언)

- 나는 배운 코드를 바로 프로젝트에 적용하는 실천적인 사람이다~!

반응형

'회고' 카테고리의 다른 글

TIL_210719  (0) 2021.07.19
TIL_210702  (0) 2021.07.06
TIL_210630  (0) 2021.07.01
TIL_210629  (0) 2021.07.01
TIL_210629  (0) 2021.06.29