본문 바로가기
  • Where there is a will there is a way.

개발/spring20

13장 웹 어플리케이션과 영속성 관리 스프링 컨테이너 기본 전략 스프링 컨테이너는 트랜잭션 범위의 영속성 컨텍스트 전략을 기본으로 사용한다. 즉 트랜잭션의 범위와 영속성 컨텍스트의 생존 범위가 같다는 뜻이다. 트랜잭션을 시작할 때 영속성 컨텍스트를 생성하고 트랜잭션이 끝날 때 영속성 컨텍스트를 종료한다 @Service 에 @Transactional 어노테이션을 사용해서 시작할때 호출한 메소드를 실행하기 직전에 스프링 트랜잭션 AOP가 먼저 동작한다. 스프링 트랜잭션 AOP 는 대상 메소드를 호출하기 직전에 트랜잭션을 시작하고, 대상 메소드가 정상 종료되면 트랜잭션을 커밋하면서 종료한다. 만약 서비스에 repository가 두개가 있고 트랜잭션이 같으면 항상 같은 영속성 컨텍스트를 사용한다. 예를들어 @Transactional @Service.. 2019. 4. 18.
spring oauth2.0 jwt 토큰 방식 JWT 인증방식 도입 배경 기존 access token으로 개발 할 시에 유저가 endpoint 로 어떠한 작업을 할 때마다 매번 auth 의 /oauth/check_token 으로의 검증이 필요했다. 하지만 JWT 인증방식으로 대체하면 Json 형식으로 유저가 데이터 정보를 가지고 있기 때문에 다른 데이터가 필요하지 않다. Authorization Server 세팅 기존 gradle 은 동일하게 세팅한다. @EnableAuthorizationServer 세팅도 동일하다. config 세팅에서 기존의 access token을 이용한 token store 방식을 jwt방식으로 변환해주는 설정을 한다. @Configuration public class Oauth2AuthorizationServerConfig.. 2019. 1. 21.
스프링 시큐리티에 대한 이해 스프링 시큐리티에 대한 이해 스프링 기반 어플리케이션의 보안( 인증과 권한 )을 담당하는 프레임워크이다. 스프링 시큐리티는 보안과 관련해서 체계적으로 많은 옵션들로 이를 지원해준다. spring security는 filter 기반으로 동작하기 때문에 spring MVC 와 분리되어 관리 및 동작한다. 스프링 시큐리티에 대한 키워드 접근 주체 ( Principal ) : 보호된 대상에 접근하는 클라이언트 인증 ( Authentication ) : 현재 유저가 누구인지 확인 / 애플리케이션의 작업을 수행할 수 있는 주체임을 증명하는 과정 ex ) HTTP Basic Authentication 폼 로그인 인가 ( Authorize ) : 현재 유저가 어떤 서비스, 페이지에 접근할 수 있는 권한이 있는지 검사 .. 2019. 1. 15.
spring OAuth server 구성 Oauth2.0 인증방식 인증방식용도비고Authorization Code웹 서버 상에서 동작하는 애플리케이션가장 많이 사용되는 유형Implicit모바일 앱 또는 단말기에서 동작하는 웹 애플리케이션 Resource Owner Password단말기 OS 또는 높은 신뢰 관계의 애플리케이션다른 유형들을 사용할 수 없을 경우에만 사용Client Credentials애플리케이션 API 접근신뢰하는 클라이언트만 사용 client credentials api flow Open API 서비스는 신뢰하는 클라이언트들 에게 API 서비스를 제공하기 위한 목적으로 사용되기 때문에Oauth2.0 방식에서 Client Credentials 인증방식을 사용하는게 좋을거라고 판단했습니다. OAuth2.0 Server endpoin.. 2019. 1. 10.
spring 이란 무엇인가 spring 이란 무엇인가이번에 생일을 기념해서 큰맘먹고 토비의 스프링책을 샀다. 물론 자바 스프링 웹개발자라면 사는 시기가 늦었다고 볼수도 있겠다 무튼 토비의 스프링을 샀고 앞으로 블로그로 로그를 남기면서 작성하면 나에게 남는게 많을거라 생각해서 로그를 남기게 되었다. 스프링이란 무엇인가?스프링은 자바 EE 애플리케이션 개발에 사용되는 프레임워크이다. 스프링 프레임워크는 애플리케이션 개발을 빠르고 효과적으로 만들 수 있게 여러가지 기술을 제공한다. 스프링 프레임워크스프링 프레임워크의 기본적인 구조는 크게 3가지로 나뉜다. 1. 스프링 컨테이너스프링은 스프링 컨테이너 또는 애플리케이션 컨택스트라고 불리는 스프링 런타임 엔진을 제공한다. 스프링의 설정정보를 참고로 해서 애플리케이션을 구성하는 오브젝트를 생.. 2018. 12. 9.
rabbitmq microservice 스프링 부트 RabbitMQ 란 open source Message broker 로 알려져 있다 즉 mircro service에서 Producer-Consumer pattern을 이용할 시에 producer 가 message 를 send 하면 consumer가 소비하는 구조이다. 예를 들자면 어느 shop 에서 고객이 주문을 요청하면 producer 가 주문flow를 요청하고 microservice 에서 주문 요청을 처리하는 flow를 소비한다는 개념이다 이때 중간에서 rabbitMQ가 비동기로 이 주문요청의 event message를 queue 형식으로 받고 microservice에 전달하는 역할을 한다고 보면 된다. RabbitMQ 기본개념AMQP(Advanced Message Queuing Protocol) :.. 2018. 11. 28.