공부/Spring 6

[QueryDSL] QueuryDSL vs JPQL

JPQL(Java Persistence Query Language)은 무엇인가? JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어를 제공한다. 따라서 테이블을 대상으로 하는게 아닌, 엔티티 객체를 대상으로 쿼리를 수행하는 언어이다. QueryDSL은 무엇인가 Querydsl은 타입에 안전한 방식으로 HQL 쿼리를 실행하기 위한 목적으로 만들어졌다. 타입에 안전하도록 도메인 모델을 변경하면 소프트웨어 개발에서 큰 이득을 얻게 된다. 도메인의 변경이 직접적으로 쿼리에 반영되고, 쿼리 작성 과정에서 코드 자동완성 기능을 사용함으로써 쿼리를 더 빠르고 안전하게 만들 수 있게 된다. JPQL의 사용방법 JPQL은 쿼리문을 직접 작성하고, 파라미터 바인딩도 직접해주어야한다. @SpringBootTest..

공부/Spring 2023.12.18

[스프링] AuditorAware

AuditorAware란 요청이 왔을때, 해당 사용자의 정보를 등록해주는 기능을하는 컴포넌트이다. 아래는 AuditorAware를 빈으로 등록해준다. ApplicationAuditAware는 실제로 동작하는 기능을 정의했다. @Bean public AuditorAware auditorAware() { return new ApplicationAuditAware(); } ApplicationAuditAware에서는 요청이 왔을때, SecurityContextHolder에서 사용자 정보를 불러와서, 사용자번호를 리턴해준다. 간략한 프로세스는 이것이 전부이지만, 그전에 수행해야할 프로세스가 있다. 물론 이전에 SecurityContextHolder에서 setAuthentication을 해주어야한다. 나의 경우 ..

공부/Spring 2023.11.22

[스프링]Spring Security - SecurityFilterChain

스프링 필터 아키텍처 필터는 무엇인가 스프링 필터의 이해 스프링 시큐리티의 이해 필터는 무엇인가 필터는 클라이언트의 요청을 수행하기 전 공통으로 거치는 검사이다. 클라이언트가 응용프로그램에 요청을 보내면, 톰캣 서블릿 컨테이너에서 요청을 받는다. 요청은 서블릿 컨테이너의 필터를 거치고 서블릿을 통해 요청이 수행된다. 스프링 필터의 이해 스프링은 기존 필터에 위임 필터 프록시를통해 커스텀 필터를 적용할 수 있다. 오른쪽 이미지와 같이 필터를 Bean으로 등록하면 필터를 등록할 수 있다. 스프링 시큐리티의 이해 스프링에서는 위임 필터 프록시(Delegating Filter Proxy)를 통해 필터를 추가할 수 있다. 스프링 시큐리티는 위임 필터 프록시에서 시큐리티 필터 체인을 통해 인증을 할 수 있도록한다...

공부/Spring 2023.11.22

[Spring] ControllerAdvice

금액같은경우 Long 타입으로 정의하는데 이걸 프론트에서 일일히 컴마를 제거하기에는 불편함을 느꼈다. 그래서 파라미터를 서버로 전달해서 파싱하는 과정에서 컴마를 제거하는 과정을 넣으려고했다. @ControllerAdvice(annotations = {RestController.class}) public class CustomControllerAdvice { @InitBinder public void initBinder(WebDataBinder dataBinder) { dataBinder.registerCustomEditor(String.class, new StringTrimmerEditor(true)); dataBinder.registerCustomEditor(Long.class, new LongProp..

공부/Spring 2022.09.27

BeanFatory와 ApplicationContext

BeanFactory 스프링 컨테이너의 최상위 인터페이스 스프링 빈을 관리하고 조회하는 역활 getBean()을 제공 ApplicationContext BeanFactory 기능을 모두 상속 받아서 제공 BeanFactory 외에도 부가기능을 제공한다 MessageSource 를 활용한 국제화 기능 : 예를 들어 한국에서는 한국어 ,영어권에서는 영어로 출력 EnviromentCapable : 환경변수 _ 로컬 , 개발 , 운영등을 구분하여 처리 ApplicationEventPublisher : 이벤트를 발행하고 구독하는 기능 ResourceLoader : 파일 , 클래스패스, 외부 등에서 리소스를 편리하게 조회 ApplicationContext는 BeanFactory의 기능을 상속받는다 Applicati..

공부/Spring 2022.03.06

스프링 IoC , DI

스프링 IoC ( Inversion Of Control) : 제어의 역전 제어의 역전 ? 보통은 개발자가 원하는 객체를 생성하고 제어하는 스타일로 개발을 하는데 , 개발자가 호출하는것이 아니라 프레임워크 같은것이 호출해주는것 . 기존 프로그램은 클라이언트의 구현객체가 스스로 필요한 구현객체를 생성하고 사용하는 구조였다. 한마디로 구현객체가 프로그램의 제어흐름을 조절했다. 제어의 역전이 사용된 경우 AppConfig가 등장후 구현객체는 자신의 로직을 실행하는 역활만 가지고 있다. 프로그램 제어흐름을 AppConfig가 가져가게 된다. 스프링 IoC ? 스프링은 스프링 프레임워크에서 위의 제어의 역전을 관리해준다. @Bean 어노테이션으로 빈을 등록해주면 스프링 컨테이너에 해당 빈이 등록되게 된다. 기본적으..

공부/Spring 2022.03.03