본문 바로가기

Web/Spring

(9)
[JPA] JPA 설명 (1) - 사용 이유 [1] JPA 와 ORM 프레임워크 사용 이유. 1) 생산성 만들어진 객체로 데이터베이스를 다루기 때문에 기존 Mybatis와 같은 Mapper 방식에서는 컬럼을 추가하거나 수정하게 되면 전체를 수정하게 되는 방법보다 생산성이 높다. 2) 유지보수성 SQL 쿼리를 직접 작성하지않고 엔티티 필드가 되는 객체를 다뤄 DB를 사용하기 때문에 유지보수가 더욱 간결하다. 3) 성능 일반적인 Spring의 encache 기능처럼 동일한 쿼리에 대한 캐시 기능을 사용한다. 4) RDBMS 종류와 무관 객체 중심으로 동작하기 때문에 Oracle, Mysql, Mssql과 같이 서로다른 환경에서도 문법을 바꿔 마이그레이션을 해야하는 번거로움이 없다. [2] 제약사항 및 단점 JPA는 통계처리와 같이 복잡한 쿼리보다는 실..
[Spring] Filter와 Interceptor Filter - 필터는 J2EE 표준 스팩에 정의 되어있는 기능이다. 주요 목적 : 보안관련 처리와 같은 web app의 전역적으로 처리해야하는 로직을 구현하기 위함. 동작 위치 : Dispatcher Servlet의 앞단에서 동작. Interceptor - 인터셉터는 Spring Framework에서 자체적으로 제공하는 기능. 주요 목적 : 인증, 권한등에 대한 디테일한 처리에 대해서는 인터셉터에서 처리한다. 동작 위치 : Dispatcher Servlet에서 Handler(Controller)로 가기전에 정보를 처리한다. ​ ​ **J2EE 란 : 자바 기술로 기업환경의 어플리케이션을 만드는데 필요한 스펙들을 모아둔 스펙 집합.
[Spring Boot] HttpMessageConverters ● Http 요청 부문을 객체로 변경하거나, 객체를 HTTP 응답 본문으로 변경할 때 사용한다. HttpMessageConverters의 종류는 여러가지가 존재하고, 어떤 요청을 받고 어떤 응답을 보내는지에 따라 메시지 컨버터가 달라진다. ​ @RequestBody @ResponseBody 아래에서 User(객체)를 리턴할 때는 기본적으로 JsonMessageConverter가 사용이되고, String타입을 이턴할 때는 StringMessageConverter가 사용이 된다. int도 마찬가지로 StringMessageConverter이다. @RestController면 @ResponseBody는 생략해도 된다. MessageConverter를 타고 객체를 응답 본문으로 바꾼다. 그냥 @Controlle..
[Spring Boot] Auto Configuration 설정과 원리 Spring은 component-scan을 통해 component들을 찾아 bean 생성을 진행하며 설정한 bean들이 생성된다. 이와 마찬가지로 spring에 기반을둔 spring boot 역시 이와같은 방법을 통해 bean을 생성한다. spring boot는 이와같은 빈 생성을 어노테이션을 통해 xml 파일 없이 보다 쉽게 설정이 가능하다. spring boot는 @Controller, @RestController, @Service, @Repository, @Bean과 같은 어노테이션은 물론 @EnableAutoConfiguration어노테이션을 이용한 auto configuration 기능에 의해 추가적인 bean들도 함께 생성된다. ​ 1. @EnableAutoConfiguration..
[spring boot] ExceptionHandler 스프링 부트에서는 ExceptionHandler를 기본적으로 등록하여 Exception을 처리하고 있다. 기본 예외 처리기는 스프링에서 자동적으로 등록하는 BasicErrorController에서 관리하고 에러발생시 JSON형태로 리턴값을 준다. ​ ▶이와 같은 기본 Exception처리 이외에 사용자가 커스텀으로 등록하여 구현가능한데 스프링 부트에서는 @ExceptionHandler 어노테이션을 사용하여 해당 Exception을 구현할수 있다. ​
[Spring] Device 체크 디바이스 체크하는법은 화면에서 체크하는 법과 백단에서 체크하는법이 있습니다. ​ 해당 포스트에서는 Spring Mobile Device Resolution을 이용하여 백단에서 체크하는법을 포스팅합니다. ​ Spring Mobile Device Resolution 사용하기 1. spring Mobile Device api를 사용하기 위해 의존성 추가. ​ 2. divice class를 사용하기위해 DeviceResolverHandlerInterceptor를 생성한후 dispatcherServlet을 설정 해줍니다. 3. DeviceUtiles.getCurrentDevice(request) 메서드를 통해 해당 유입 요청의 디바이스 정보를 사용할수 있다.
[Hibernate + Spring Data JPA + Querydsl] Querydsl [Querydsl] Querydsl이란? - 정적 타입을 이용해서 SQL과 같은 쿼리를 생성할 수 있도록 해 주는 프레임워크. - 문자열로 작성하거나 XML 파일(ex : Ibatis, Mybatis)에 쿼리를 작성하는 대신, Querydsl이 제공하는 플루언트(Fluent) API를 이용해서 쿼리를 생성할 수 있다. 단순 문자열과 비교해서 Fluent API를 사용하는 장점 - IDE의 코드 자동 완성 기능 사용 - 문법적으로 잘못된 쿼리를 허용하지 않음 - 도메인 타입과 프로퍼티를 안전하게 참조할 수 있다. - 도메인 타입의 리펙토링을 더 잘 할 수 있음. ** 기존 String형의 SQL쿼리가 문자로 Type Check가 불가능하고, 실행하기 전까지 작동 여부를 확인 하기 어려운 부분이 있던 단점을..
[Spring boot] @ControllerAdvice 어노테이션 @ControllerAdvice 어노테이션을 사용하는 이유는 해당 어노테이션을 달아준 클래스들을 추후에 예외처리 핸들링 하기 위함이다. @ExceptionHandler 어노테이션을 이용하여 즉 @ControllerAdvice 어노테이션을 사용하여 이점은 1. 예외처리 핸들링이 용이해진다.
Spring AOP(Aspect-Oriented Programming): 관점지향 프로그래밍 AOP(Aspect-Oriented Programming) : 관점지향 프로그래밍 공통화 할 수 있는 부분들을 Aspect라는 하나의 단위로 묶어 객체가 본질적으로 해야 할 일만 기술 할수 있도록 한다. AOP의 대척점 기존의 객체 지향 프로그래밍(OOP: Oriented Programming)의 구현된 모듈이 핵심 관점의 구현한 모듈과 긴밀히 결합되어있어 모듈화 및 유지보수가 쉽지않고 실로 모듈화가 잘 된 어플리케이션 클래스를 보더라도 핵심기능을 위한 코드보다 다양한 부가적인 기능과 처리를 위한 부분의 양이 더 많아져 코드의 중복, 모듈화, 유지보수, 유연성 저하 등이 발생하였다. 이와 같이 횡단관심 부분에 AOP를 적용하여 단 하나의 로직만 변경되더라도 모든 소스에 적용된수 있도록 일원화및 모듈화 할..