Spring은 SpEL (Spring Expression Language)를 제공하고 있다. Spring Expression Language (SpEL) RequestMapping이나 value binding 등 Spring을 사용하는 수많은 부분에 SpEL을 사용할 수 있고 다양한 기능을 지원한다. Literal expressions Boolean and relational operators Regular expressions Class expressions Accessing properties, arrays, lists, and maps Method invocation Assignment Calling constructors Bean references Array construction Inline ..
@PathVariable 변수의 사용 Spring의 RequestMapping은 다음과 같이 고정 값이 아닌 path variable을 지정하여 사용할 수 있다. @GetMapping("/{projectId}/setting/{mainMenuId}/{subMenuId}") public String page(@PathVariable String projectId, @PathVariable mainMenuId, @PathVariable String subMenuId) { // ... 생략 } 이렇게 설정되는 PathVariable 은 HandlerMethodArgumentResolver 중 PathVariableMethodArgumentResolver 를 통해 requestAttribute에 해당 값 들이 추..
Reflection 소개 reflection 은 java의 classpath metadata를 scan 하고 캐싱하는 라이브러리이다. https://github.com/ronmamo/reflections 다음과 같은 것들을 scan 할 수 있다. type의 subtype annotation으로 주석이 달린 type annotatoin, parameters, return type이 있는 method classpath 경로에서 찾을 수 있는 resource ... 사용 방법은 간단하다. dependency를 추가하고 # Maven org.reflections reflections 0.10.2 # Gradle implementation 'org.reflections:reflections:0.10.2' 다음과 ..
Spring Framework web의 기존 에러 처리 기존 Spring Framework를 사용하여 웹을 구현하면 기본적으로 제공되는 에러 처리를 사용한 에러 응답 결과는 다음과 같은 형태였다. { "timestamp":1417379464584, "status":400, "error":"Bad Request", "exception":"org.springframework.web.bind.MethodArgumentNotValidException", "message":"Validation failed for argument at index 0 in method: public org.springframework.http.ResponseEntity test.UserController.testUser(test.U..
https://github.com/spring-projects/spring-framework/wiki/Upgrading-to-Spring-Framework-6.x 이 페이지에서는 Spring Framework 6.0으로 upgrade 하는 방법에 대한 지침을 제공합니다. Upgrading to Version 6.1 69 revisions 기준으로 작성됨 Baseline upgrades Spring Framework 6.1은 다음 library를 통해 최소 요구 사항을 높였다: SnakeYAML 2.0 Jackson 2.14 Kotlin Coroutines 1.7 Kotlin Serialization 1.5 Removed APIs 더 이상 사용되지 않는 여러 class, constructor 및 metho..
https://github.com/spring-projects/spring-framework/wiki/What%27s-New-in-Spring-Framework-6.xWhat's New in Version 6.2156 revision 기준으로 작성됨Core Containercore container의 관대한 locking; 23501 참조singleton availability에 대한 callback; 21362 참조singleton pre-instantiation 전에 bean factory initionalization을 위한 callback; 32836 참조local root directory 및 jar caching을 통한 multi scan operation으로 component scanning..
Spring Framework 취약점 관련 보안 업데이트 권고 관련 보안 공지가 3월 31일 올라왔다. https://krcert.or.kr/data/secNoticeView.do?bulletin_writing_sequence=66592 취약점은 2가지인데 CVE-2022-22965, CVE-2022-22963이다. CVE-2022-22965 (Spring4Shell) CVE-2022-22965는 Spring Core에서 발생하는 원격코드 실행 취약점이다. https://tanzu.vmware.com/security/cve-2022-22965 해당 경우가 발생하는 전제 조건은 다음과 같다. JDK 9 or higher Apache Tomcat as the Servlet container Packaged ..
JDK version Java SE 5 이전 자바는 JDK 1.0, JDK 1.1, J2SE 1.2, J2SE 1.3, J2SE 1.4처럼 1.x로 버전을 관리하였다. 이후 6, 7, 8과 같은 숫자로 변경이 되었는데 이때 이후 각 버전 별 업데이트가 계속 올라가게 된다. (관련 히스토리는 너무 길어 링크로 대체함) https://namu.wiki/w/Java/%EB%B2%84%EC%A0%84%20%EC%A0%95%EB%B3%B4 각 버전 별 업데이트 관리를 해야 하는 부담이 커지자 오라클은 상용과 오픈소스를 나누기로 하고 openjdk와 oraclejdk를 분리하고 6개월 주기로 major 버전을 변경하고 3년 주기로 LTS (Long Term Support) 버전을 관리하기로 하였다. 이에 대해서는 ..
Upgrading to Spring Framework 5.x Upgrading to Spring Framework 5.x의 5.3 버전에 대한 내용을 번역한 글입니다. spring-projects/spring-framework spring-projects/spring-framework Spring Framework. Contribute to spring-projects/spring-framework development by creating an account on GitHub. github.com Upgrading to Version 5.3 Third-Party APIs and Libraries Kotlin의 경우 Kotlin 지원이 1.4로 업그레이드되었으며 여전히 Kotlin 1.3+과 호환됩니다...
What's New in Spring Framework 5.x What's New in Spring Framework 5.x의 5.3 버전에 대한 내용을 번역한 글입니다. spring-projects/spring-framework spring-projects/spring-framework Spring Framework. Contribute to spring-projects/spring-framework development by creating an account on GitHub. github.com What's New in Version 5.3 General Core Revision ASM 9.0, Kotlin 1.4로 업그레이드합니다. ReactiveAdapterRegistry에서 RxJava 3을..