본문 바로가기

스프링

(34)
[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 어노테이션을 메소드에 선언..
Rabbitmq + SpringBoot 샘플 프로젝트 만들기 Rabbitmq 설치하는 방법은 이전 포스팅에서 확인할 수 있습니다. 이번에는 SpringBoot와 연동해 queue에 메세지를 보내고 queue에서 메세지를 가져오도록 해보겠습니다. 1. Rebbitmq를 실행합니다. $ rabbitmq-server 2. 소스코드를 다운받고 실행하면 됩니다. https://github.com/keepseung/rabbitmq-starter GitHub - keepseung/rabbitmq-starter: springboot에 rabbitmq를 연동한 스타터 프로젝트입니다. springboot에 rabbitmq를 연동한 스타터 프로젝트입니다. Contribute to keepseung/rabbitmq-starter development by creating an acco..
RabbitMQ 설치하기 프로젝트를 하면서 RabbitMQ를 공부했던 내용을 정리하기 위해 정리했습니다. RabbitMQ는 무엇인가? rabbitmq는 Advance Message Queuing Protocol(AMQP)을 구현하는 메세지 중개인입니다. AMQP는 생산자(Producers), 중개자(Broker) 그리고 소비자(Consumer)를 사용해서 메세지를 전달하는 것을 표준화한 프로토컬입니다. AMQP 표준은 다음 세 개의 주요 특징을 준수하도록 설계되었습니다. 보안, 신뢰도, 상호 운용 핵심 특징 보안 : 인증, 인가, LDAP 그리고 Rabbit 플러그인을 사용한 TLS를 지원함 신뢰도 : 1. 메세지가 성공적으로 메세지 브로커에게 전달되었는지, 2. 메세지가 소비자에게 성공적으로 처리되었는지 확인함 상호 운용 : ..
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..
JPA 소개 및 JPA의 기본 동작 과정 들어오며 이 포스팅의 내용은 «자바 ORM 표준 JPA 프로그래밍»을 참고하고 정리한 것입니다. ORM(Object-relational mapping) 이란 Object-relational mapping (객체 관계 매핑) 객체는 객체대로 설계하고, 관계형 데이터베이스는 관계형 데이터베이스대로 설계한다. ORM 프레임워크가 중간에서 매핑해준다. 대중적인 언어에는 대부분 ORM 기술이 존재한다. ORM은 객체와 RDB 두 기둥 위에 있는 기술 이다. JPA(Java Persistence API) 란 현재 자바 진영의 ORM 기술 표준으로, 인터페이스의 모음이다. 즉, 실제로 동작하는 것이 아니다. JPA 인터페이스를 구현한 대표적인 오픈소스가 Hibernate라고 할 수 있다. JPA 2.1 표준 명세를 ..