Spring으로 개발을 하면서 Mybatis 프레임워크를 많이들 써봤을 것이다. Mybatis는 JAVA 객체를 SQL과 매핑시켜주는 SQL Mapper이며 현재까지도 많이 쓰이고 있다. Mybatis를 사용하면서 가장 많이보는 에러중 Paramter를 N개이상 넘겼을때 Parameter not found. available parameters are 라는 예외메세지가 출력되는 경우가 발생할 수 있는데 이 메시지는 왜 발생이되며 어떻게 해결해야하는지 알아보자. 환경구성은 Spring Boot와 Mybatis를 연동해서 살펴보았다. Mybatis Sql SELECT 페이징 객체를 파라미터로 넘겨 리스트 10개를 가져오는 SQL이다. 이때 XML에 정의된 #{start}와 #{end}는 파라미터로 넘어온 P..
개발자가 개발한 기능들을 상용에 배포하기전에 개발 및 QA서버에서 테스트를 하고 정상적으로 문제가 없으면 상용에 배포하게된다. 이때 내가 개발한 코드들을 개발, QA, 상용서버에 배포할때 일일이 각 DB접속정보 및 외부데이터 (프로퍼티에 있는값)들을 서버마다 맞게 변경을 해야하는 번거로움이 있는데 Spring에서는 Profile이란걸 제공해주는데 이 Profile만 설정해두면 원하는 데이터를 원하는 환경에 맞게 배포할수 있게 해준다. 예제코드와 함께 알아보자. 환경별 프로퍼티 세팅 환경마다 다른값들은 (ex: DB정보, 파일경로 등) 프로퍼티 파일에 두고 JAVA에서 해당프로퍼티를 불러오게끔 쓰이는데 그중에 'spring.profiles' 라는 속성에 Profile을 각각 local, dev, prod로..
이번장에는 JAVA 8 부터 제공해주는 스트림과 함수형 인터페이스에 대해 알아보자. 스트림 JAVA 8부터 추가되었으며 Collection의 저장요소를 순회하면서 각 요소들에 대한 필터, 연산, 그룹핑 등의 작업을 해주는 기능이며 람다표현식으로도 처리를 할 수 있다. 스트림이 나오기 전에는 Collection객체를 처리할때 코드가 많아지고 가독성이 좋지않았다. 아래 예제코드를 한번보자 스트림 이전코드 스트림 없이 List를 순회하면서 문자열 'A'가 존재하는 요소들만 따로 List로 얻고싶다면 직접 for문을 돌려서 요소들 하나씩 체크하여 또다른 List에 담아주었다. 가독성도 별로이고 코드길이만 괜히 길어질 뿐이다. 이제 이 방식을 스트림의 기능중 '필터'를 이용해서 처리해보도록 하자. 스트림 이후코드..
웹개발을 해본 개발자라면 게시판을 한번이상은 개발해보았을 것이다. 게시판을 개발하면서 각 게시글의 기본적인 데이터 및 게시글의 순번을 화면에 보여주게 되는데 이때 게시글의 순번은 각 게시글을 대표하는 번호인 DB 테이블에 INT타입의 PK값(sequence, auto_increment로 처리된 값) 을 주로 보여주게된다. 하지만 PK값이 숫자가 아닌 다른값이라던가 혹은 고객사의 요청으로 No값을 DB에있는 값이 아닌 순수 게시글의 순번을 보여달라는 요구사항이 들어올 수 있다. 실제로 필자는 이러한 요구사항을 받은적이 있다. 긴 말보단 바로 예제코드와 함께 살펴보도록 하자. 개발환경 Java 11 Spring Boot 2.3.5 Mybatis Thymeleaf 데이터 준비 게시판 테이블을 만들어서 페이징을..
Spring으로 웹개발을 하면서 유저에 대한 인증 및 권한처리를 해주어야 할 때가 있다. 아래는 해당 예시다. Authentication(인증) : 인증이 되지않은 유저는 서버에 요청을 보내도 서버에선 요청에 대한 응답을 하지않는다. (ex. 비 로그인 사용자) Authorization (인가) : 인증은 되었지만 서버에 요청을 보내도 권한이 없으면 요청에 대한 응답을 하지않는다. (ex. 일반권한을 가진유저는 관리자권한만이 액세스 할 수 있는곳에 요청을 보내도 정상적으로 응답을 받지못한다) Spring Boot에서는 이처럼 잘못된 요청을 하게되면 default로 Whitelabel Error Page를 보여주게 된다. 존재하지않는 리소스에 요청을 한다던가, 인증이 되지않은 유저가 요청을 한다던가, 서버..