Application/Spring Framework

    스프링 트랜잭션, Spring AOP

    트랜잭션 추상화와 동기화 트랜잭션 추상화 트랜잭션 서비스의 종류는 다양하다. 스프링은 데이터 액세스 기술과 트랜잭션 서비스 사이의 종속성을 제거하고 스프링이 제공하는 트랜잭션 추상화 계층을 이용해서 트랜잭션 기능을 활용하도록 만들어준다. 이를 통해 트랜잭션 서비스의 종류나 환경이 바뀌더라도 트랜잭션을 사용하는 코드는 그대로 유지할 수 있는 유연성을 얻을 수 있다. 트랜잭션 동기화 트랜잭션 동기화는 트랜잭션을 일정 범위 안에서 유지해주고, 어디서든 자유롭게 접근할 수 있게 만들어준다. PlatformTransactionManager 스프링 트랜잭션 추상화의 핵심 인터페이스는 PlatformTransactionManager로, 모든 스프링의 트랜잭션 기능과 코드는 이 인터페이스를 통해서 로우 레벨의 트랜잭션..

    Spring MVC, DispatcherServlet

    WebApplicationContext Servlet이란? 자바 VM에게 main() 메소드를 가진 클래스를 시작시켜 달라고 요청할 수 있는 독립 자바 프로그램과는 다르게, 웹 환경에서는 자바 VM에게 main() 메소드를 호출할 방법이 없다. 또한 여러 명의 사용자가 동시에 웹 애플리케이션을 이용한다. 그래서 웹 환경에서는 main() 메소드 대신 서블릿 컨테이너가 HTTP 요청을 받아서, 해당 요청에 매핑되어 있는 서블릿을 실행해주는 방식으로 동작한다. main() 메소드 역할을 하는 서블릿을 만들어두고, 미리 애플리케이션 컨텍스트를 생성해 둔 다음, 요청이 서블릿으로 들어올 때마다 getBean()으로 필요한 빈을 가져와서 정해진 메소드를 실행하는 방식으로 동작한다. WebApplicationCon..

    로컬에서 임베디드 S3 사용하기

    파일 업로드와 S3 파일 업로드 기능을 구현할 때, 주로 확장성이 좋은 AWS에서 제공하는 S3 서비스를 이용해서 많이 구현할 것입니다. Spring Cloud AWS S3 연동 및 파일 업로드 스프링에서 프로필 사진 업로드 등 파일을 업로드하는 경우 Spring Cloud를 통해 쉽게 개발하실 수 있습니다. 참고로 지난번 AWS S3에 파일 업로드 하는 방법에 비해 좀 더 개선된 방법으로 글 올려보 willseungh0.tistory.com 문제 사항 로컬 혹은 테스트 환경에서 AWS S3을 사용해서 파일 업로드 기능을 테스트가 필요한 상황이 있습니다. 이때마다 실제 S3 버킷에 파일을 업로드하는 것은 비효율적이다. 이를 개선하기 위해서 테스트 환경에서는 런타임 시점에 Stub 객체를 주입하는 방식으로..

    스프링 인터셉터와 어노테이션으로 인증 및 권한 관리하기

    사이드 프로젝트를 진행하면서 좀 더 효율적으로 인증 및 권한 관리를 할 수 없을까 고민하면서 해 본 방법을 정리한 글입니다. 기존의 상황 먼저 사이드 프로젝트의 요구사항을 보면, 비회원 유저와 회원 유저(Member)로 구분되며, (인증 체크 필요) 여러 유저가 속해 있을 수 있는 그룹(Organization)이라는 개념이 존재하며, 그룹 내에 관리자(ADMIN)와 일반(USER) 멤버 두 가지 형태로 존재하며 각기 다른 권한 범위를 가지고 있습니다. (권한 체크 필요) 요약하면 현재 저희 프로젝트에서 현재까지 필요한 인증 및 권한 작업은 로그인하지 않아도 되는 API (인증이 필요 없는 API) 로그인이 필요한 API (인증이 필요한 API) 특정 그룹에 속해 있어야 하는 API (관리자 or 일반 멤..

    [Spring] IoC 컨테이너와 DI와 빈의 스코프

    IoC 컨테이너와 DI IoC란? 스프링에서는 오브젝트의 생성, 제거, 사용 및 주입 등의 작업을 개발자가 직접 애플리케이션 코드에 작성하는 대신 독립된 컨테이너가 담당한다. 이를 컨테이너가 코드 대신 (빈) 오브젝트에 대한 제어권을 가지고 있다 해서 IoC (Inversion Of Control)이라고 한다. IoC 컨테이너 vs 빈 팩토리 vs 애플리케이션 컨텍스트 스프링에서는 IoC를 담당하는 컨테이너를 빈 팩토리 또는 애플리케이션 컨텍스트라고 부르기도 한다. 단순히 오브젝트의 생성과 오브젝트 간의 런타임 관계를 설정하는 DI 관점으로 볼때는 빈 팩토리라고 하지만, 스프링 컨테이너는 단순한 DI 작업외에도 더 많은 일을 한다 그래서 더 큰 관점에서 애플리케이션 컨텍스트라고 부르기도 한다. IoC 컨..