springboot (9) 썸네일형 리스트형 [AWS] Spring Boot 와 멀티파트 업로드를 사용해 S3에 대용량 파일 업로드하기 이전 글에서 SpringBoot에서 S3로 파일(이미지, 동영상) 업로드하는 기능을 개발했습니다. [AWS] Springboot에 AWS S3 연동 (이미지, 동영상 업로드) 안녕하세요? 이번 시간엔 SpringBoot & AWS S3 연동하기를 진행해보려고 합니다. 따라 하시기만 해도 로컬에서 이미지, 동영상 파일 업로드가 가능하고, EC2에 배포한 환경에서도 파일 업로드가 가능 develop-writing.tistory.com 하지만 위 방식은 크게 두 가지 문제가 있습니다. 1. 대용량 파일을 업로드할 때 시간이 많이 걸립니다. 필자가 EC2 t2.small에서 S3로 업로드 테스트할 시 1.3GB 동영상은 무려 90초가 걸렸습니다. 동일 환경에서 멀티파트 업로드 방식을 테스트 시 해당 시간을 50.. 서블릿 필터 사용해 인증 체크하기 로그인되지 않은 사용자는 로그인이 필요한 여러 페이지에 접근을 하지 못해야 합니다. 여러 로직들은 인증이라는 공통 관심사를 가지고 있고 서블릿 필터를 사용해 해당 인증 기능을 공통적으로 적용하는 방법을 알아보겠습니다. 인증 체크 필터 만들기 @Slf4j public class LoginCheckFilter implements Filter { // 인증과 무관하게 항상 접근을 허용하는 요청 Url private static final String[] whitelist = {"/", "/members/add", "/login", "/logout", "/css/*"}; @Override public void doFilter(ServletRequest request, ServletResponse response.. 세션 정보와 타임아웃 설정 세션 정보 확인 @Slf4j @RestController public class SessionInfoController { @GetMapping("/session-info") public String sessionInfo(HttpServletRequest request){ HttpSession session = request.getSession(false); if (session == null){ return "세션이 없습니다."; } session.getAttributeNames().asIterator() .forEachRemaining(name -> log.info("session name={}, value={}",name, session.getAttribute(name) )); log.info("s.. @SessionAttribute 어노테이션을 사용해서 세션 조회하기 @SessionAttribute 스프링은 세션을 더 편리하게 사용할 수 있도록 @SessionAttribute을 지원합니다. 이미 로그인된 사용자를 찾을 때는 다음과 같이 사용하면 된다. 참고로 이 기능은 세션을 생성하지 않습니다. @SessionAttribute(name = "loginMember", required = false) Member loginMember @GetMapping("/") public String homeLogin(@SessionAttribute(name = SessionConst.LOGIN_MEMBER, required = false) Member loginMember, Model model) { // 세션에 회원 데이터가 없으면 home if (loginMember == nu.. [SpringBoot] 서블릿의 HttpSession을 사용해 세션 구현하기 HttpSession 소개 서블릿을 통해 HttpSession을 생성하면 다음과 같은 쿠키를 생성합니다. 쿠키 이름이 JSESSIONID이고, 값은 추정 불가능한 랜덤 값입니다. Cookie: JSESSIONID=5B78E23B513F50164D6FDD8C97B0AD05 HttpSession 사용 먼저 세션의 키로 사용될 문자열을 정의합니다. public class SessionConst { public static final String LOGIN_MEMBER = "loginMember"; } @PostMapping("/login") public String login(@Valid @ModelAttribute LoginForm form, BindingResult bindingResult, HttpSer.. [SpringBoot] 세션 직접 만들어서 로그인 처리하기 스프링 부트에서 로그인을 처리하기 위해서는 서블릿이 지원하는 HttpSession을 사용하면 쉽게 구현이 가능합니다. 하지만 세션에 대한 이해도를 높이기 위해 직접 만들어보기로 하겠습니다. 이전에 웹브라우저와 서버 간에 로그인 상태를 유지하는 방법에 대해서 알아보겠습니다. 로그인 상태 유지하기 로그인 상태를 유지하기 위해 대표적으로 다음과 같은 방법이 있습니다. 1. 요청할 때 사용자 정보를 쿼리 파라미터로 전달하기 사용자 정보를 쿼리 파라미터를 계속 유지하면서 보내는 것은 매우 어렵고 번거로운 작업입니다. 게다가 식별 가능한 사용자 정보를 쿼리 파라미터에 노출하는 것은 보안상 위험합니다. 2. 쿠키에 사용자 정보 담아서 사용하기 서버에서 로그인에 성공하면 HTTP 응답에 쿠키를 담아서 브라우저에 전달합.. [SpringBoot] 스프링부트에서 비동기 처리하기 스프링 부트에서 @Async annotation을 적용함으로써 비동기 처리를 쉽게 할 수 있습니다. @Async 사용법 1. @EnableAsync로 @Async를 쓰겠다고 스프링에게 알린다. @Configuration @EnableAsync public class AsyncConfig { @Bean public Executor getAsyncExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(8); executor.setMaxPoolSize(8); executor.setQueueCapacity(500); executor.setThreadNamePrefix("seung-poo.. [SpringBoot] 스프링부트에서 스케쥴러 사용하기 Schedule의 사전적 정의는 "일정[시간 계획]을 잡다"라는 뜻입니다. Spring Boot를 통해 Spring에서 지원하는 스케줄러를 간편하게 작성할 수 있습니다. Schedule 기능 켜기 자바 설정(Java configuration) 관련 클래스에 @EnableScheduling를 추가하면 스케쥴링 기능을 사용할 수 있습니다. @EnableScheduling @SpringBootApplication public class SchedulerApplication { public static void main(String[] args) { SpringApplication.run(SchedulerApplication.class, args); } } 구현하기 @Scheduled 어노테이션을 메소드에 선언.. 이전 1 2 다음 목록 더보기