jdk20 버전으로 코프링을 세팅하려고 하니 gradle 버전에서부터 삐걱거려서 애를 좀 먹었다. 다음에는 삽질하지 않기 위해 여기에 정리해놓는다. 1. 프로젝트 생성 2. Gradle 버전 설정: IntelliJ IDEA > Settings ... 3. 프로젝트 자바 버전 확인 4. Gradle 버전 변경 및 Refresh: project/gradle/wrapper/gradle-wrapper.properties build.gradle.kts Springboot 3.x 버전부터 jdk는 17이상이어야 하고, jdk 20버전 이상부터는 kotlin.jvm이 "1.9.0-RC" 버전이어야 한다. 그리고 jdk 20을 사용하기 위해선 Gradle의 버전을 "8.1.1" 이상으로 맞춰야 한다. 그래야 빌드가 정..
Restful API서버라면 이런 처리를 할 필요가 없겠지만, 앞뒤(frontend/backend)가 붙어있는 프로젝트라면 CSRF 공격 방지는 해놓는 게 좋다. 1. 디펜던시 추가 - Gradle 기준 implementation 'org.springframework.boot:spring-boot-starter-web' // Spring Security implementation group: 'org.springframework.boot', name: 'spring-boot-starter-security', version: '2.6.1' 2. Configuration 설정 import java.io.IOException; import javax.servlet.ServletException; import ..
백엔드/프론트엔드 구분해서 개발하는 추세라 리액트나 vue 사용하면 쌩으로 페이징을 개발해서 쓸 것 같진 않은데, 그래도 정리차 올려놓는다. 참고로 pagingUtils쪽 로직은 내가 개발한 부분은 아니고, 먼저 이전 분이 개발해놓으신 거다. 퍼블리싱은 알아서... ▽ paging.js /** * 페이징 처리 JS */ var pagingUtil = { pagingView: function (currentPageNo, pageSize, totalCount, targetFunction) { var pageNo = parseInt(currentPageNo); // 현재 페이지 번호 var countPage = 10; // 한 화면에 출력될 페이징 개수. var finalPageNo = parseInt(tot..
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.net.URLEncoder; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class DownloadFile { /** * 파일 다운로드 * * @param filePath: 파일명.ext을 포함한 전체 경로 * @param fileName: 파일명.ext * @param reque..
예전에 Spring에서 파일 업로드 하는 방법을 올린 적이 있었는데([Spring] Spring으로 파일 업로드하기.), 이번엔 조금 더 간편한 방법으로 올린다. import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import org.apache.commons.io.FileUtils; import org.springframework.web.multipart.MultipartFile; public class FileUtils { // 파일업로드 public static void upload(List multipartFileList) throws Exception { try { ..
1. build.gradle compile "org.springframework.data:spring-data-redis:1.8.23.RELEASE" compile "redis.clients:jedis:2.9.3" 2. 빈 설정 추가 3. Controller.java 사용 예제 import org.springframework.data.redis.core.RedisTemplate; @Autowired private RedisTemplate redisTemplate; // 데이터 저장 HashMap dateMap = new HashMap(); dateMap.put("email", "aaa@abc.co.kr"); dateMap.put("mobile", "12341234"); redisTemplate.opsFo..
일하면서 사용한 java stream 몇 가지 예제들을 기록해둔다. import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.Stream; public class StreamFilter01 { public static void..