Spring (28) 썸네일형 리스트형 스프링 인터셉터에 ArgumentResolver 활용하기 지난번에 스프링 인터셉터로 로그인 인증을 구현했고, ArgumentResolver를 사용해 더 간단하게 구현하는 방법을 알아볼 예정입니다. 기존에 @SessionAttribute를 세션을 검증한 기능 @GetMapping("/") public String home(@SessionAttribute(name = SessionConst.LOGIN_MEMBER, required = false) Member loginMember, Model model) { // 세션에 회원 데이터가 없으면 home if (loginMember == null) { return "home"; } model.addAttribute("member", loginMember); return "loginHome"; } ArgumentReso.. 스프링 인터셉터를 사용해 로그인 인증 체크하기 스프링 인터셉터를 사용해 로그인 인증하는 것을 구현할 것입니다. 인터셉터 생성 @Slf4j public class LoginCheckInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String requestURI = request.getRequestURI(); log.info("인증 체크 인터셉터 실행 {}", requestURI); HttpSession session = request.getSession(false); if (session == n.. 스프링 인터셉터를 사용해 요청 로그 확인하기 스프링 인터셉터 소개 스프링 인터셉터도 서블릿 필터와 같이 웹과 관련된 공통 관심 사항을 효과적으로 해결할 수 있는 기술입니다. 서블릿 필터가 서블릿이 제공하는 기술이라면, 스프링 인터셉터는 스프링 MVC가 제공하는 기술입니다. 둘 다 웹과 관련된 공통 관심 사항을 처리하지만, 적용되는 순서와 범위, 그리고 사용방법이 다릅니다. 스프링 인터셉터 흐름 HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터 -> 컨트롤러 스프링 인터셉터는 디스패처 서블릿과 컨트롤러 사이에서 컨트롤러 호출 직전에 호출됩니다. 스프링 인터셉터에도 URL 패턴을 적용할 수 있는데, 서블릿 URL 패턴과는 다르고, 매우 정밀하게 설정할 수 있습니다. 스프링 인터셉터 제한 HTTP 요청 -> WAS -> 필터 -> .. 서블릿 필터 사용해 요청 로그 남기기 공통 관심 사항 애플리케이션 여러 로직에서 공통으로 관심이 있는 있는 것을 공통 관심사(cross-cutting concern)라고 합니다. 만약 게시물을 관리하는 것을 로그인한 사용자에게만 허락한다면 게시물 등록, 수정, 삭제, 조회 등등 여러 로직에서 공통으로 인증에 대해서 관심을 가지고 있습니다. 웹과 관련된 공통 관심사를 처리할 때는 HTTP의 헤더나 URL의 정보들이 필요한데, 서블릿 필터나 스프링 인터셉터는 HttpServletRequest를 제공합니다. 서블릿 필터 소개 필터 흐름 HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러 필터를 적용하면 필터가 호출된 다음에 서블릿이 호출됩니다. 그래서 모든 고객의 요청 로그를 남기는 요구사항이 있다면 필터를 사용하면 됩니다. 참고로 .. @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] 스프링부트에서 비동기 처리하기 스프링 부트에서 @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 어노테이션을 메소드에 선언.. Hello JPA!! 애플리케이션 개발하기 들어가며 이 포스팅의 내용은 «자바 ORM 표준 JPA 프로그래밍»을 참고하고 정리한 것입니다. 권장 환경은 다음과 같습니다. 자바 8 이상 Maven 사용 H2 데이터베이스 사용 인텔리제이 사용 Hello JPA 애플리케이션을 통해 간단히 CRUD 할 수 있는 서버 애플리케이션을 만들어보겠습니다. 라이브러리 추가 - pom.xml 4.0.0 jpa-basic ex1-hello-jpa 1.0.0 org.hibernate hibernate-entitymanager 5.3.10.Final com.h2database h2 1.4.199 JPA 설정하기 - persistence.xml JPA 설정 파일 {프로젝트 디렉토리}/src/main/resources/META-INF/persistence.xml 위치함 p.. 이전 1 2 3 4 다음