JAVA

자바 스프링부트 2.7.7->3.3.9 업그레이드 (3)

생활개발 2025. 3. 17. 17:03
728x90

1편 바로가기 : 자바 스프링부트 2.7.7->3.3.9 업그레이드 (1)

2편 바로가기 : 자바 스프링부트 2.7.7->3.3.9 업그레이드 (2)

2편에서 스프링시큐리티까지 수정 완료!

근데 프로젝트 실행하면 아직 안됨...

버전 넘어오면서 javax라이브러리들이 jakarta를 사용해야된다고해서 수정

인텔리제이 기준 ctrl +shirt + r 눌러서 전체수정

자바 파일 열어보면서 javax 빨간색으로 되어있는 부분들 jakarta로 전체 수정!

(임포트 된거만 수정해야됩니다!!)

예외로

import javax.sql.DataSource;

 

 

얘는 수정 안해도됨.

그리고 application.yml에 들어가

#spring
spring:
   profiles:
      active: local #아래에 설명되어있습니다
      include: MAIL-INFO
   
   servlet:
      multipart:
         enabled: true
         file-size-threshold: 2KB
         maxFileSize: 10MB
         maxRequestSize: 20MB
   devtools: 
      livereload:
         enabled: true
   freemarker:
      cache: false
   thymeleaf:
      cache: false

에서

#spring
spring:
   profiles:
      active: local #아래에 설명되어있습니다
      include: MAIL-INFO
   
   servlet:
      multipart:
         enabled: true
         file-size-threshold: 2KB
         maxFileSize: 10MB
         maxRequestSize: 20MB
   devtools: 
      livereload:
         enabled: true
   freemarker:
      cache: false
   thymeleaf:
      cache: false
      allow-request-attributes: true #3.3.9버전 쓰면서 추가

로 수정! allow-request-attributes: true 를 추가해준다

또 스프링부트3으로 넘어오면서 httpServletRequest가 없어졌다고 함...

httpServletRequest.requestURI써서 url로 체크하는 로직이 헤더에 있었는데

이걸 공통으로 추가

최상위 디렉토리에서 config 폴더 추가해서 AdminHttpServletRequest함수 추가

import jakarta.servlet.http.HttpServletRequest;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ModelAttribute;

/**
 * 스프링부트 3.0으로 넘어오면서 httpServletRequest를 직접 사용 할 수 없어서 추가
 * heaer에서 #httpServletRequest.requestURI로 사용하던 부분도 같이 수정
 */

@ControllerAdvice
public class AdminHttpServletRequest {

    @ModelAttribute
    public void addRequestUri(Model model, HttpServletRequest request) {
        model.addAttribute("requestURI", request.getRequestURI());
    }
}

url받아와서 변수 추가

기존헤더

<li class="dep1 home"
    th:classappend="${#httpServletRequest.requestURI.contains('dashboard')} ? 'menu_on'">
    <div class="main_menu_btn menu_home"><a href="/admin/dashboard" class="main_menu_txt"></a></div>
</li>

변경된 헤더

<li class="dep1 home"
    th:classappend="${requestURI.contains('dashboard')} ? 'menu_on'">
    <div class="main_menu_btn menu_home"><a href="/admin/dashboard" class="main_menu_txt"></a></div>
</li>

 

모든 컨트롤러에 url에서 변수 불러와서 넣고싶으면 

import jakarta.servlet.http.HttpServletRequest;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ModelAttribute;

/**
 * 스프링부트 3.0으로 넘어오면서 httpServletRequest를 직접 사용 할 수 없어서 추가
 * heaer에서 #httpServletRequest.requestURI로 사용하던 부분도 같이 수정
 */

@ControllerAdvice
public class AdminHttpServletRequest {

    @ModelAttribute
    public void addRequestUri(Model model, HttpServletRequest request) {
        model.addAttribute("requestURI", request.getRequestURI());
        model.addAttribute("var1", request.getParameter("var1"));
        model.addAttribute("var2", request.getParameter("var2"));
    }
}

이렇게 넣어주면 끝! 여기까지 하면 이제 실행은 가능하다!

또 안되는거 있으면 올리겟습니다!

728x90

'JAVA' 카테고리의 다른 글

자바 스프링부트 2.7.7->3.3.9 업그레이드 (2)  (0) 2025.03.05
자바 스프링부트 2.7.7->3.3.9 업그레이드 (1)  (0) 2025.02.27
자바 정규식  (0) 2025.02.06
OpenAI Assistants API 연동하기  (1) 2025.01.21
자바 URL 가져오기  (0) 2024.08.19