본문으로 건너뛰기

Java Eco›Spring Framework

34
Java EcoTILSpring Framework

Spring Argument resolver

어노테이션 기반의 컨트롤러, @RequestMapping을 처리하는 HandlerAdapter. 어노테이션 기반의 컨트롤러는 다양한 파라미터를 사용할 수 있다. (HttpServletRequest, Model, @RequestParam, @ModelAttribute, @RequestBody) 이것을 처리할 수 있는 것은 ArgumentResolver기반에서 작동하기 때문이다. 원하는 ArgumentResolver를 만들수도 있다. 컨트롤러의 반환 값을 변환 (ModelAndView, ResponseBody, HttpEntity..)
Java EcoTILSpring Framework

JdbcTemplate의 SimpleJdbcInsert Bean 등록에 관하여

Reference 일단 오류와 상관없이.. SimpleJdbcInsert를 빈으로 만드는건 뭔가 이상한듯 저게 저 Repository에서만 쓸텐데.. 저걸 빈으로 만들어서 얻는 이점이 없음 JDBC 드라이버에서 제공해주는 DB 메타데이터를 사용해서 insert 쿼리 정보로 사용한다던데 왠지 빈으로 등록 시점에 JDBC 연결이 완료되지 않았을수도 있겠다 여튼, Entity 객체에서 리플렉션으로 '타입'정보를 꺼내쓴다면 애초에 dataSource같은게 필요없겠지 (순수 Java 리플렉션만으로 될테니) 근데 DataSource를 요구한다
Java EcoTILSpring Framework

세션을 사용하기 위한 Filter와 Interceptor

세션 생성을 자동으로 해주는 객체 기본 사용법 쿠키를 지원하는지 안하는지 서버는 모른다. 그래서 주소에 JSESSIONID를 세션 생성할때 내려 보내는데 이것을 모든 컨트롤러에서 다 파싱을 해야하니 불편하다. 대게는 쿠키지원을 하니까 tracking-modes를 cookie로 변경하면 주소에 JSESSIONID가 사라진다. Filter : 서블릿 Interceptor : 스프링 만약 로그인 여부 체크를 컨트롤러마다 해야 한다면 번거롭다. 그래서 공통 관심사를 처리하는 AOP를 활용할 수도 있지만, 예를들어 특정URL에 대한 처리와
Java EcoTILSpring Framework

JDBC의 Prepared Statement

NamedParameterJdbcTemplate query()) 가장 정확한 사용법 일반 JdbcTemplate은 SQL을 실행할때 Prepared Statement 라는게 있는데, 쌩 SQL을 사용하는게 아니라 SELECT FROM user WHERE id = ? 이런식으로 일정 형식문자열로 SQL을 준비하는 것이다. 저걸 Prepared Statement 라고 부른다. 그러면, 저 쿼리를 DB가 받으면 무슨일을 하냐면. SQL을 파싱하여 대기 상태로 놓는다. → 만약 기존에 동일한 SQL쿼리가 있었다면 그 쿼리캐시를 재사용해서
Java EcoTILSpring Framework

스프링 부트에서 RESTful

두 요청의 mapping이 주소가 같으나 RequestMethod가 GET과 POST로 구분 되는것을 알 수 있다. HTML은 POST와 GET방식만 지원하고 PUT, DELETE는 지원하지 않는다. 스프링에서 POST와 GET방식을 이용해 나머지 두가지를 사용할 수 있는 기능을 지원하는데 HiddenHttpMethodFilter가 있다. 스프링 2.1이상에서는 자동으로 필터가 등록된다. HiddenHttpMethodFilter는 _method속성의 파라미터가 존재할 경우 그 값을 요청 방식으로 사용한다. 스프링 부트 2.2부터 기
Java EcoTILSpring Framework

commons-io로 구현하는 Multipart

### 관리 차원에서 후속편 안내 이 글 역시 이 블로그에서 꾸준히 인기가 좋아 commons-io가 아닌 스프링 multipart를 사용한 파일 업로드 기능을 다시 정리해서 올려봤다. 업로드와 다운로드 두편으로 나눠서 올라가고 우선 업로드편 링크를 남긴다. 👉 스프링 부트 Multipart 업로드편 첨부파일의 유효성 검사 파일 전송의 진행률 표시 예외처리 사용자 편의성의 드래그 앤 드롭 기능 → 동일한 이름을 가진 파일이 업로드 될 경우 사용 중인 운영체제에 따라서 저장 되지 않거나 파일명이 바뀌거나 덮어쓰기가 될 수 있다. 이
Java EcoTILSpring Framework

Spring Boot; Exception

아래의 3가지 방법이 있다. 자바의 방법 : try/catch 사용 컨트롤러 단위 : 각각의 컨트롤러에서 @ExceptionHandler 사용 전역 처리 : @ControllerAdvice을 사용한 전역 예외처리 @ExceptionHandler는 중복코드가 발생한다고 한다.. 여기서 나올 중복 코드가 그 중복이 아닐텐데.. 스프링 3.2에서 추가됨. Annotation만으로 추가 설정없이 예외 처리 가능. @ControllerAdvice : 예외처리 객체임을 알림. @org.springframework.web.bind.annotat
Java EcoTILSpring Framework

Spring Boot; AOP

스프링 부트에서의 AOP도 역시 마찬가지로 적용할 수 있다. slf4j 로깅을 aspect로 등록하는 코드. 예제로써 보자.. 모르는 내가 봐도 좋은 코드는 아닌 것같음. 책에 또 코드 빠져있음…. 따로 bean등록을 하지 않았기 때문에 component scan으로 잡는다. AOP를 사용하기 위해 Aspect 어노테이션을 붙인다. Slf4j 어노테이션으로 slf4j 객체를 주입받는다. (log) Around로 aspect가 작동할 범위를 execution 필터 지정한다. execution : 하위 또는 지정된 클래스나 메소드에 필