반응형

전체 글 27

[Spring] 동일한 Type의 Bean이 여럿일 때

동일한 타입의 Bean에 대해 @Autowired를 적용해 주어야 하는 상황이면 Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'XXXX' available: expected single matching bean but found N 라는 에러가 발생한다. (대충 특정 타입(XXX)의 빈을 사용해야하는데 해당 타입의 빈이 여러개 발견되어 문제가 발생했다!) 이럴 때 해결 방법 두가지. @Primary @Qualifier 1. @Primary 동일한 타입의 여러 Bean 중에 @Primary 어노테이션을 붙여준다. 그럼 해당 어노테이션이 붙은 Bean이 우선권을 받게..

카테고리 없음 2020.11.24

[JPA] 지연로딩 vs 즉시로딩 (FetchType.LAZY or EAGER)

1. 지연로딩 (FetchType.LAZY) A Entity(부모)를 조회할 때 지연로딩지정된 B Entity(자식)를 즉시 로딩하지 않고, A.getB()로 실제 B엔티티를 호출할 때 database로부터 해당 B엔티티를 조회해오는 방식. 2. 즉시로딩 (FetchType.EAGER) A Entity(부모)를 조회할 때 즉시로딩지정된 B Entity(자식)를 즉시 로딩하는 방식. A.getB()로 실제 B엔티티를 호출하지 않아도 database로부터 해당 B엔티티를 조회하여 A의 내용으로 포함하여 조회해오는 방식.

[Spring] Spring MVC Request Lifecycle (Filter, Interceptor, AOP 차이 및 정리)

요청에 대한 실행순서 Filter → Interceptor → AOP → Interceptor → Filter 순으로거친다. 실행 순서를 보면 Filter가 Dispatcher servlet 바깥쪽인 가장 외부, Interceptor가 Dispatcher servlet 다음으로 존재, 그리고 그 안에 AOP가 있는 형태이다. 1. Filter Filter는 Dispatcher servlet 앞단에서 스프링 컨텍스트 외부에 존재하여 스프링과 무관한 자원에 대해 동작한다. 요청과정에서 요청내용을 변경하거나 여러가지 체크를 수행할 수 있고, 응답과정에서도 자원의 처리가 끝난 이후의 응답내용에 대해서도 변경이 가능하다. 보통 web.xml에 등록하며 일반적으로 인코딩 변환 처리, XSS방어 등의 요청에 대한 처..

ahnnyung ,/Spring 2020.11.24

[BufferedReader] BufferedReader.readLine()로 Json 데이터를 읽어올 때 주의할 점

팀원이 작성한 코드 중 문제가 있다는 팀장님의 말씀. 옆으로 쫄래쫄래 다가가 같이 코드를 보아도 여전히 문제를 모르겠다. 결과는 이렇다. Token을 발급해주는 서버로부터 받는 포맷은 다음과 같은 Json형태이다. 이 형태일때는 tokenbufferedReader.readLine()으로 한 줄을 받아, ObjectMapper를 이용하여 TokenVo를 만들어도 문제가 되지않는다. 하지만 Token을 발급해주는 서버가 너무나도 친절하여 굳이 다음과 같이 Json포매팅으로 변경해서 보내준다면?? tokenbufferedReader.readLine()으로 한 줄을 받는 순간 "{" 만 덜렁 받아지게되는 문제가 발생한다. 따라서 다음과 같은 (정답은 아니지만) 일종의 안전장치를 달아주는 게 좋다. StringB..

ahnnyung ,/Java 2020.11.20

[Spring Rest API] axios로 파일 다운로드 시 Content-Disposition 헤더 사용기 (헤더 추가해서 보냈는데 받는 쪽에서 제대로 안받아 질 때)

위는 작성한 Controller 코드 중 일부분이다. Content-Disposition 헤더를 추가하여 파일명을 붙여보내는 메소드이고, postman으로 테스트해볼때는 문제가 없었다. 그런데, 프론트 작업을 하는 친구로부터 제대로 전달되지 않는다고 얘기를 들었다. 해당 header값이 없다고한다. 뭐지?? 분명 postman으로 올바르게 동작하는 걸 확인했는데... 곧장 프론트 작업하는 친구에게 달려가 같이 확인해보았다. 함께 브라우저(chrome)로 확인해본 결과 올바르게 전달이 되는 것을 확인할 수 있음에도 프론트 코드에서 해당 header를 찾을 수 없다는 오류가 지속적으로 발생했다. 여기서 1차 멘붕. 관련한 여러 키워드로 검색해보니 CORS 문제라고 하는데... 나는 분명 처리를 해줬다고 생각..

[Spring] Spring Security?

[Spring] Spring Security Spring에서 제공해주는 인증(Authentication)과 인가(Authorization)에 대한 처리를 해주는 Framework이다. Spring Security를 사용하지 않으면 직접 세션을 체크하고 redirect 작업을 해주어야하지만, Spring Security는 filter를 기반으로 동작하기 때문에 springMVC와 별개로 동작한다. Spring Security 주요 용어 접근 주체(Principal) 보호된 리소스에 접근하는 사용자 - Authentication으로 추상화 인증(Authenticate) 보호된 리소스에 접근한 대상에 대해 이 유저가 누구인지, 애플리케이션의 작업을 수행해도 되는 주체인지 확인하는 과정. 해당 사용자가 본인이 ..

ahnnyung ,/Spring 2020.11.19