Spring을 처음 본게 2.5 버전인가 그랬는데 어느덧 6.0이 나온다고 한다. 2.5일때는 모든걸 XML으로 설정하곤 했었는데 6.0에서는 이 XML을 아마 지원하지 않을것 같다. 10년만에 참 많은 부분이 바뀐듯 하다. 출시일 2021년 12월 6.0 M1(milestone) 버전을 공개했다. 그리고 2022년 7월에는 RC1(release candidate) 버전을 출시하고 대망의 GA(general availability) 버전은 2022년 10월에 출시된다고 한다. 또 공부해야할게 늘고... migration 해야 할일도 생기겠지... 변경점 (5.3 vs 6.0) 5.3 버전에서 6.0 버전으로 갈때 변경된다고 한 점은 다음과 같다. Java 17 based on XML 구성 형식은 지원이 ..
@ConditionalOnProperty 은 단어 그대로 Property의 조건에 따라 작동 하는 bean 이다. 꼭 bean이어야 한다. 예를 들면 우리가 많이 사용하는 StereoType(@Controller, @Service..)은 그것 자체로 bean이어서 이 하위 요소(method level)에 @ConditionalOnProperty 를 붙이면 동작하지 않는다. 사용법 Property란 무엇이냐? Spring 사용시 application.properties나 application.yml에 정의해서 사용하는 값들을 말한다. 예를 들면 이런 application.yml 이 있다. my: fruit: banana my.fruit 이 어떤거냐에 따라서 다른 bean을 생성하고자한다. my.fruit ..
log4j 이슈에 이어 Spring Framework도 보안 이슈가 생겼다. KISA 인터넷 보호나라&KrCERT KISA 인터넷 보호나라&KrCERT www.boho.or.kr 여기에 주된 내용은 써있고 요약을 하자면 이렇다. o Spring Core에서 발생하는 원격코드실행 취약점(CVE-2022-22965) o Spring Cloud Function에서 발생하는 원격코드실행 취약점 (CVE-2022-22963) log4j와 같이 원격코드실행 부분에 문제가 있다고 한다. 어제만해도 Spring Core에서 발생하는 원격코드실행 취약점에 대한 부분은 조치사항이 없다고 보면 되었지만 발빠르게 Spring쪽에서 패치를 내 주었다. Releases · spring-projects/spring-framewor..
바로 어제 Spring4Shell 이라는 보안을 위협하는 것이 검출이 되었고 바로 패치가 나온듯 하다. 바로 spring framework의 5.3.18로 변경을 하는건데 아직 이건 maven central repo에는 안올라왔다. 곧 올라오겠지.. 그래도 5.3.18이 나왔을때 바로 적용을 하려면 springboot를 사용하면서 spring의 버전만 변경하는 방법에 대해 알아야 한다. 필자는 maven을 사용중이고 변경방법도 maven 기준으로 작성하겠다. pom.xml 5.3.18 위와 같이 pom.xml의 properties 부분에 spring-framework.version 으로 spring의 버전을 변경할 수 있다. org.springframework-version, spring.version ..
예전에 application.yml (or application.properties) 분리하는 방법에 대해 기술한적이 있다. Springboot application.yml (application.properties) 파일 분리방법 Springboot를 사용하면 기본적으로 사용할 수 있는 환경설정 파일은 application.properties이다. 작은 프로젝트에서는 이것만 사용해도 문제는 없지만 규모가 커지면 이 파일 하나에 설정을 관리하기 벅 oingdaddy.tistory.com springboot 2.4 이상버전부터는 위와 같은 방법을 사용하지 않아도 된다. (springboot 2.4 미만은 위의 글을 참조해서 설정한다.) 바로 spring.config.import 를 이용하여 여러개의 pro..
ApplicationContext를 Util 클래스에서 가지고 와서 사용을 하고 싶었다. 그래서 다음과 같이 ApplicationContextAware를 impl하여 ApplicationContextProvider를 만들었다. @Component public class ApplicationContextProvider implements ApplicationContextAware { private static ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext ctx) throws BeansException { applicationContext = ctx; } public st..
지난번에도 JWT 관련 인증 내용을 다룬적이 있었다. Spring Security + JWT 인증 초간단 연동 예제 Monolithic Architecture에서 Micro Service Architecture까지는 아니더라도 많은 부분이 API로 분리가 되고 이에 대한 인증의 필요성이 생겼다. Spring Security와 JWT를 이용하면 이런 API 서버간의 인증을 간단.. oingdaddy.tistory.com 초간단 연동 예제라고 했는데 뭐가 초간단이냐며 욕도 먹고 해서 이번에는 정말 다 빼고 내가 통신할 API 서버와 JWT 인증하는 부분에 대해서만 간략히 기술하려한다. Springboot로 샘플 프로젝트를 2개 만들었다. 하나는 API를 호출하는 역할을 하는 A 프로젝트, 다른 하나는 A로부..
servlet 3.0이 되면서 예전에 web.xml에서 하던 servlet에 대한 설정을 java config로 할 수 있다. 기본적으로는 이런 servlet에 대한 설정을 안해주면 springboot가 DispatcherServlet으로 처리를 한다. 하지만 때에 따라 다른 servlet을 태워야 하는 요청이 있을수도 있다. 이것을 하기 위한 방법은 다음과 같다. Application.java (springboot main class) @SpringBootApplication public class ApiApplication { public static void main(String[] args) { SpringApplication application = new SpringApplication(Api..