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

개발/spring20

애플리케이션 아키텍처 아키텍처는 어떤 경계 안에 있는 내부 구성요소들이 어떤 책임을 갖고 있고, 어떤 방식으로 서로 관계를 맺고 동작하는지를 규정하는 것이라고 할 수 있다. 아키텍처는 단순히 정적인 구조를 나타내는 것으로만 생각하기 쉽지만 실제로는 그 구조에서 일어나는 동적인 행위와 깊은 관계가 있다. 아키텍처 설계는 여러가지가 있다. 시스템 레벨의 아키텍처 , 애플리케이션 레벨의 아키텍처 , 데이터 아키텍처등 이 글에서는 스프링 웹 애플리케이션 아키텍처에 대해서 정리해보겠다. 1. 계층형 아키텍처 우리는 자바 애플리케이션을 설계할때 우선적으로 성격이 다른 코드가 얽혀 있는 것을 두 개의 오브젝트로 분리하고, 그 사이에 유연한 결합을 가질 수 있도록 인터페이스를 두고, 그 관계를 맺어주는 제 3의 존재인 DI 컨테이너를 둬서.. 2020. 7. 19.
스프링이란 무엇인가? 스프링에 대해 가장 잘 알려진 정의는 이렇다 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크 우리가 자바 개발을 하면서 컬렉션 프레임워크라고 불리우는 프레임워크를 사용한 경험이 있다. ( 물론 스프링도 ) 그런데 왜 스프링은 애플리케이션 프레임워크라고 하는 것일까? 애플리케이션 프레임워크 스프링의 기원이 된 예제 애플리케이션의 프레임워크는 책에서 설명한 각종 자바 엔터프라이즈 개발 전략의 핵심을 담아서 개발됐다. 자바 엔터프라이즈 개발의 전 계층에 등장하는 기술과 애플리케이션의 전 영역에 대한 효과적인 설곋와 개발 기법을 다루고 있기 때문에 자연스럽게 애플리케이션의 전 영역을 지원하는 종합적인 애플리케이션 프레임워크라고 하는 것이다. 스프링의 일차적인 존재 목적은 핵심 기술.. 2020. 7. 12.
spring security custom filter 인증 구현 http request 에서 custom filter 를 적용하여 특정 header 에 토큰을 담고 해당 토큰이 유효하면 인증된 요청이 되게끔 구현하고 싶었다. 스프링 사이트에서 표시된 이미지다. 솔직히 스프링에 대해서 제대로 모르는 사람이 딱 이 그림을 접했을때 무슨생각이 들지 모르겠다. 위에서 중요한 핵심은 ( custom filter 를 구현할 때 ) 1. AuthenticationFilter 2. SecurityContextHolder.getContext() -> Authentication 3. AuthenticationProviders 이 3개다. security 에 filter 들이 여러개 기본적으로 구현되어 있는데 난 여기에다가 custom filter 를 추가할 계획이다. 그렇다면 어느 위.. 2020. 5. 20.
java spring retrofit2 gson custom serializer 구현 spring java 서버에서 api 연동을 구현하려면 http 통신이 필요하다. http 통신을 하게 해주는 라이브러리는 restTemplate 와 retrofit2 정도를 알고 있는데, 우리는 retrofit2 를 사용하였다. retrofit2 는 gson 라이브러리를 사용하고 있다. 기본적인 설정만으로도 잘 되는게 많지만 비즈니스의 요구사항이 많아지면 당연 custom 을 피할 수 없다고 본다. retrofit2 gson dynamic serializer 구현 나는 관련 업체에 특정 필드를 dynamic 하게 exclude 해야하는 요구사항이 있었고 해당 api 를 호출할때 이 기능을 사용하고 싶었다. 우선 configuration 설정을 해준다. @Configuration @Configuratio.. 2020. 5. 7.
spring transaction 이란 나는 spring 개발을 하면서 흔히 서비스 메소드에 @Transaction 어노테이션을 보곤했다. 처음엔 아무것도 모르고 개발을 했었지만 점차 여러가지 문제에 직면하게 되었고 그러다 보니 Transaction 에 대해서 정리가 필요함을 느꼇다. 우리가 흔히 데이터를 처리하는 과정에서 트랜잭션에 대한 내용을 개념적으로나마 배웠었다. 트랜잭션은 논리적인 개념이고 4가지의 성질을 지닌다 Atomic Consistent Isolation Durability spring transaction 도 이 개념을 포함하고 있다. spring 은 @Transactional 로 표현하는데 이는 우리가 알고있는 어노테이션 방식으로 선언되어서 해당 메소드를 시행할때 메서드 위에 트랜잭션 기능이 적용된 프록시 객체가 생성된다... 2020. 4. 23.
JPA 애플리케이션 영속성 관리 처음 멘땅에 개발을 하면서 @Service Layer 에 @Transcational 을 본 기억이 많다. 그냥 아무 생각없이 붙이거나 붙여져 있는걸 보면서 개발했던 것 같다. 뭐 여러가지로 시간이 지나면서 어느정도 알게 되었지만 이참에 책에 나온내용을 토대로 정리해볼까 한다. 내가 정리할 내용은 스프링 + JPA 환경에서의 영속성 관리에 대해서이다. 1.1 트랜잭션 범위의 영속성 컨텍스트 스프링 컨테이너는 트랜잭션 범위의 영속성 컨텍스트 전략을 기본으로 사용한다. 이 전략은 이름 그대로 트랜잭션의 범위와 영속성 컨텍스트의 생존 범위가 같다는 뜻이다. 즉 , 트랜잭션을 시작할 때 영속성 컨텍스트를 생성하고 트랜잭션이 끝날 때 영속성 컨텍스트를 종료한다. 그리고 같은 트랜잭션 안에서는 항상 같은 영속성 컨텍.. 2020. 4. 13.