본문 바로가기

개발중

(617)
intellij jdk 설정하는 방법 기록하기 ✍ Project Structure창 (단축키 : SHIFT+CTRL+ALT+S) 1) SDK 변경 2) Language Level 변경 3) Language Level 변경 4) 원하는 JDK를 선택한다(JDK는 한 폴더에 모아두는것을 추천!) Project Setting (단축키 : CTRL+ALT+S) Build,Execution,Deployment -> Build Tools -> Gradle 5) Gradle JVM 변경 6) Project bytecode version 변경
[스프링] Intercepter 설정하는 법에 대해서 ✍ 구글링으로 'Intercepter 가 무엇인가 ?' 라는 물음에 대해 '공통관심사를 분리하여 API 가 호출될 때에 세 가지 시점에 맞춰 필요한 로직을 입맛대로 구현할 수 있는 기능이야' 까지는 대답을 할 수 있었다. 하지만 구현은 해본적이 없어 직접 설정을 해보았다. : ( 빈수 깃허브 >> https://github.com/soobinJung/Intercepter GitHub - soobinJung/Intercepter: Intercepter Test Intercepter Test. Contribute to soobinJung/Intercepter development by creating an account on GitHub. github.com 실행되지 않는 인터셉트 공부한 곧이곧대로 코드를 적었..
[Gson] String => Object Array 활용하기 LabellingDataVO 객체로 파씽 해주기 아래 객체 배열을 파씽을 해보자. String patJson = "[" + " {\"icType\":1,\"color\":\"#5ba1e0\",\"patSeq\":9766,\"icCode\":1,\"wordNm\":\"혜택\"}" + " ,{\"icType\":1,\"color\":\"#5ba1e0\",\"patSeq\":15068,\"icCode\":1,\"wordNm\":\"현명하다\"}" + " ,{\"icType\":1,\"color\":\"#5ba1e0\",\"patSeq\":107560,\"icCode\":1,\"wordNm\":\"맞춤\"}" + "]"; Gson 을 생성 하고 fromJson 에 파씽하고자 하는 문자열과 , 파씽될 타입을 명시..
서블릿 필터와, 스프링 인터셉터 ( 면접단골질문 ) 🎹 공통 관심사 대부분 많은 웹 서비스는 로그인을 해야 서비스를 이용할 수 있다. 로그인을 하지 않은 사용자는 접근할 수 있는 페이지가 제한적이며 로그인이 필요한 페이지 접근이 허용되서는 안된다. 하지만, 그렇다고 로그인이 필요한 모든 컨트롤러 로직에 로그인 여부를 확인하는 코드를 작성하는 것은 너무 비효율적이다. 수정에도 취약하다. 이렇게 많은 로직에서 공통으로 관심이 있는 부분을 공통 관심사(cross-cutting concerns)라 한다. 여러 로직에서 공통으로 로그인에 관심을 가지고 있는데, 이러한 공통 관심사는 스프링에서 AOP로 처리할 수 있다. 하지만, 웹에 관련된 공통 관심사는 스프링 AOP 보다는 서블릿 필터, 스프링 인터셉터에서 처리하는게 좋다. 웹과 관련된 공통 관심사를 처리할 때는 H..
@NotNull, @NotEmpty, @NotBlank @NotNull @NotEmpty @NotBlank javax.validation.constraints package에 포함된 기능으로 api에서 값을 입력받을 때 validation 체크를 위해 사용되는 어노테이션입니다. 많이 사용하게 되는 어노테이션으로 한 번만 차이를 확실히 알고 나면 용도에 맞게 잘 사용할 수 있습니다. @NotNull The annotated element must not be null. Accepts any type. NotNull은 말 그대로 null 값만 허용하지 않습니다. 그렇기 때문에 "", " " 가 입력되었을 경우는 허용하게 됩니다. @NotEmpty @NotEmpty The annotatd element must not be null nor empty. Suppor..
@RestController, ResponseEntity, @PathVariable @RestController REST 방식에서 가장 먼저 기억해야 하는 점은 서버에서 전송하는 것이 순수한 데이터라는 점 입니다. 기존의 Controller 에서 Model 에 데이터를 담아서 JSP 등과 같은 View 로 전달하는 것은 아니므로 기존의 Controller 와는 조금 다르게 동작합니다. 스프링4 에서는 @Controller 외에 @RestController 라는 어노테이션을 추가해서 해당 Controller 에서의 모든 메서드의 리턴 타입을 기존과 다르게 처리한다는 것을 명시합니다. @RestController 이전에는 @Controller 와 메서드 선언부에 @ResponseBody 를 이용해서 동일한 결과를 만들 수 있었습니다. @RestController 는 메서드의 리턴타입으로 사..
[에러] java.lang.Integer cannot be cast to java.lang.String resultType이 HashMap 일 때, String value = (String) map.get("value"); 위와 같이 Number(Int) 타입을 곧바로 String 캐스팅하려고 할때 발생한다. 해결 방법은 아래와 같이 캐스팅 변환이 아닌 String 클래스의 valueOf(Object) 를 사용하여 처리한다. String value = String.valueOf( map.get("value"));
트랜잭션이 뭐냐면 🎨 ACID가뭐냐면 🎨 트랜잭션은 필요한가 ? 트랜잭션(Transaction)이란? 트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 수행되어야할 일련의 연산들을 의미한다. 트랜잭션은 작업의 완전성을 보장해준다. 즉, 논리적인 작업 셋을 모두 완벽하게 처리하거나 또는 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 만들어주는 기능이다. 사용자의 입장에서는 작업의 논리적 단위로 이해를 할 수 있고 시스템의 입장에서는 데이터들을 접근 또는 변경하는 프로그램의 단위가 된다. 트랜잭션은 SELECT, UPDATE, INSERT, DELETE와 같은 연산을 수행하여 데이터베이스의 상태를 변화시키는 작업의 단위다. 트랜잭션의 특징(ACID) Atomicity(원자성)..