controller에 접근 전에 접근하게 하는 기능을 하는 어노테이션 클래스 명 위에 작성할 수 있으며 @ControllerAdvice("com.pakker.test") 이런 식으로 컨트롤러 거치기 전 들르게 하는 선택자(패키지 등)를 지정할 수 있다. @ModelAttribute는 @ControllerAdvice 안에 메소드에 붙이는데 컨트롤러에 넘어가기전 실행시켜준다. 나는 컨트롤러에 접근 전에 항상 공통 vo에 세션에 있는 로그인 정보를 넣어서 전달하고 싶어서 사용했다. 예시) @Slf4j @Controller @ControllerAdvice("com.pakker.test") public class BaseController { @ModelAttribute("{flag}") public ParamV..
spring boot 에서 cors 설정 시 작성했던 webconfig를 수정해 주자.. import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration @EnableWebMvc public class WebConfig implements WebMvcC..
Date 형태를 LocalDateTime으로 변경 한 후 원래 yyyy-MM-dd HH:mm:ss 로 잘보이던 형태가 json으로 바껴서 나와서 당황 { "date": { "year": 2020, "month": 11, "day": 22 }, "time": { "hour": 17, "minute": 15, "second": 57, "nano": 0 } } 찾아보니 LocalDateTime과 LocalDate 둘다 해당하는듯 gson사용시에 해결하는 방법이다. import com.google.gson.JsonElement; import com.google.gson.JsonPrimitive; import com.google.gson.JsonSerializationContext; import com.googl..
@Transactional(readOnly = true)가 적용된 메서드에서 @Transactional 혹은 @Transactional(readOnly = false)가 적용된 메서드를 호출 할 경우 무조건 read-only Transaction이 적용된다. 트랙잭션이 전파되는 것은 맞지만 JDBC 벤더들 마다 readOnly속성의 구현이 된 벤더들도 있고 그렇지 않은 벤더들도 있다. 그래서 만약 이때 R을 제외한 CUD를 할 경우 에러를 발생한다. 이것은 참일수도 있고 거짓일 수도 있다. 적용이 되는 경우도 있고 안되는 경우도 있다고 한다. 정상적인 상황인 경우 readOnly는 트랜잭션 범위는 유지하되 조회 기능만 남겨두어 조회 속도가 개선되게끔 하려고 사용한다.
private static Map cash = new HashMap(); static { for (RoleType type : RoleType.values()) { cash.put(type.idx, type); } } hashMap 이 속도가 빠르므로 enum에는 map형태를 넣어 두는 것이 좋다. 람다식으로 cash 값을 넣을 수 있는데 굳이 static 블록을 선언한 이유는 jvm 가동시 static이 올라같때 같이 되기도 하고, 뒤에 람다식 같은걸로 쓸수도 있지만, static 함수이기 때문에 보통 static 블록으로 작성한다고 함
* .class 파일 디컴파일 하면 원본 .java랑은 다름 이유?