AOP

오늘은 지난번 정리못한 Spring AOP에 대한 정리를 해보려 한다. 그동안 스프링을 사용하며 당연하게 사용해왔떤 AOP에 대해 좀 더 깊은 지식과 배경에 대해 알아보려 한다. 물론 이러한 점들이 실제 Spring AOP를 사용하는데 있어서 크게 도움이 되지 않을수도 있지만, 알고 쓰는것과 모르고 쓰는것에는 큰 차이가 있다고 믿는다.

Read more

Java GC(Garbage Collection)에 대하여

오늘은 그동안 작성하길 망설여왔던 주제에 대해서 포스팅을 하려한다. 바로 Java의 Garbage Colection(GC)에 대한 내용이다. Java개발자라면 기본적으로 알고있어야한다고 생각했지만, 그 내용들이 실제 업무나 코딩을 하는데 있어서 크게 쓰임새가 없다고 생각하여 미루고 미뤄왔던 포스팅이다. 하지만 최근 Naver D2나 GC에 대해 잘 작성된 글이나 영상들을 보며 개발자로써의 호기심이 치솟았고, 결국 이렇게 포스팅 작성에까지 이르게 되었다. 많고 조금 어려운 내용일 수도 있지만 길을 잃지말고 끝까지 작성해보도록 하겠다.

Read more

Spring MVC

최근 회사에서 SI프로젝트 지원을 나가게 되었다. 해당 프로젝트에서 사용하는 프레임워크가 Spring MVC였다. 해당 패턴에 대하여 다시한번 리마인드도 해볼겸 대부분의 웹 개발에 있어서 표준처럼 쓰이는 MVC 디자인 패턴에 대해 알아고보, 나아가 Spring MVC의 처리 과정까지 알아보도록 하겠다.

MVC 패턴이란?


Read more

Pojo란?

Spring은 POJO 기반의 프레임워크라는 말을 들어보았을 것이다. 여기서 POJO의 의미는 무엇일까? POJO는 Plain Old Java Object의 약자로 말 그대로 해석을 하면 오래된 방식의 자바 오브젝트라는 말이다. 뜻이 애매하고 와닿지도 않는다. 이런 애매모호함은 다양한 해석을 만들었고, 포스팅마다 설명이 다르다.

결국 정확한 어원과 의미를 알아야겠다는 생각을 가지게 되었고, 다양한 자료들을 조사하기 시작하였다. POJO를 정확하게 이해하기 위해서는 단어 등장의 배경부터 알아야한다.

Read more

Spring DI(의존성주입) & IoC(제어의역전)

Spring에서의 핵심 개념인 의존성주입(Dependency Injection, DI)과 제어의 역전(Inversion of Control, IoC)에 대해 알아보도록 하자. 두 개념은 사실 거의 같은 의미라고 할 수 있다. 의존성 주입은 외부에서 두 객체간의 관계를 결정해주는 디자인 패턴이고, 이 객체들의 사용에 대한 책임이 프레임워크에 있다는 것이 바로 제어의 역전이기 때문이다. 즉, Spring은 IoC를 통해 객체들의 의존성을 분리시켜 결합도를 낮춰주는 역할을 하고 있다.

Read more

Spring Framework란?

Spring의 역사

Spring Framework이 등장하기 전에는 EJB라는 기술을 통해 웹 애플리케이션을 개발하였다. 이 기술은 여러가지 복잡성으로 인해 사용하기 까다로웠고, 이러한 단점들을 보안하기 위한 기술들이 연구되었다. 그 과정에서 가장 호평을 받은 기술이 Spring Framework이다.

물론 Spring Framework가 처음부터 바로 나온것은 아니다. 2002년 로드 존슨은 자신이 출판한 저서(Expert One-on-One J2EE Design and Development)에 스프링의 핵심 개념과 기반 코드들을 소개하였다.

책 출간 직후 유겐 휠러와 얀 카로프가 로드 존슨에게 오픈 소스 프로젝트를 제안하였고, 전통적인 EJB라는 겨울을 넘어 새로운 시작이라는 뜻으로 Spring이라고 명칭을 짓게 되었다.

Read more

Spring Batch

Batch Program이란?

일반적으로 배치(Batch) 프로그램이라 하면, 일련의 작업들을 하나의 작업단위로 묶어 연속적으로 일괄처리 하는 것을 말한다.
예를 들어 하루전날의 집계된 요금데이터를 집계해야한다고 가정해보자. 이 업무는 하루에 1번만 수행하면 된다. 이를 위해 api를 구성하는것은 낭비가 된다. 또한 대량의 데이터를 처리하는 도중 실패가 된다면?? 이에 대한 처리를 어떻게 할 것인가?

이러한 단발성 대용량 데이터를 처리하는 프로그램을 배치프로그램이라 한다. 위에서 한 고민들을 살펴보면 단순히 집계하는 비즈니스 로직 이외에 고려해야할 부분이 많다는 것을 알 수 있다. 개발자가 비즈니스 로직 이외의 다른 부분들에 대한 고민을 덜어주도록 지원하는것을 프레임워크라 한다. 대표적인 프레임워크는 Spring이 있다.

Read more

DB 트랜잭션

트랜잭션이란?

트랜잭션은 하나의 작업을 수행하기 위해 필요한 데이터베이스의 연산들을 모아놓은 것으로, 데이터베이서에서 논리적인 작업의 단위이며 장애가 발생했을 때 데이터를 복구하는 작업의 단위이다.

현업에서 쓰이는 개념으로 쉽게 설명하면 트랜잭션 단위로 데이터의 커밋과 롤백이 이루어진다.

  • 커밋(Commit) : 모든 부분작업이 정상적으로 완료되면 이 변경사항을 한꺼번에 DB에 반영한다.
  • 롤백(Rollback) : 부분 작업이 실패하면 트랜잭션 실행 전으로 되돌린다.
    이때, 모든 연산을 취소하지 않고 정해진 부분까지만 되돌리고 싶을 때 사용하는 것이 savepoint이다.
Read more

객체지향 5원칙(SOLID)

2000년대 초 로버트 마틴이 명명한 객체 지향 프로그래밍의 다섯가비 기본원칙을 마이클 페더스가 원칙의 앞글자를 따서 다시 SOLID라고 소개하였다.
SOLID의 5대원칙은 다음과 같다.

  1. 단일 책임 원칙(Single Responsibility Principle)
  2. 개방 폐쇄 원칙(Open/Cloed Principle)
  3. 리스코프 치환 원칙(Liskov Subsitution Principle)
  4. 인터페이스 분리 원칙(Interface Segregation Principle)
  5. 의존관계 역전 원칙(Dependency Inversion Principle)

이 다섯가지 원칙애 대해 자세히 알아보도록 하자

Read more