본문 바로가기

Development

(63)
인텔리제이로 스프링부트 시작하기 (IntelliJ, Spring Boot) 인텔리제이(IntelliJ) 인텔리제이가 이클립스에 비해 강점은 아래와 같습니다. 스마트한 추천 기능(Smart Completion) 다양한 리팩토링과 디버깅 기능 이클립스의 깃(Git)에 비해 높은 자유도 프로젝트 시작시 인덱싱을 하며 파일을 비롯한 자원들에 대한 빠른 검색 속도 HTML, CSS, JS, XML에 대한 강한 지원 자바, 스프링 부트 버전업에 맞춘 빠른 업데이트 체감으로 가장 크게 느끼는 것은 추천 기능입니다. 자동완성이 너무 잘 되어 있어서 잠시 이클립스를 볼 일이 있을 때 답답하더라고요. 하지만 인텔리제이는 유료로 제공되고 있습니다만, 학생분들이시라면 인증을 받으시고 교육용으로 이용 가능하십니다. 혹은 인텔리제이 커뮤니티(무료)로 제공되는 버전도 있기에 이를 사용하시는 것을 권장드립..
스프링디자인패턴(4) 싱글턴 패턴 - Singleton Pattern 싱글턴 패턴: Singleton Pattern Single에 주목해 번역하자면, 인스턴스를 하나만 만들어 사용하기 위한 패턴입니다. 즉, 하나의 인스턴스만 생성한 뒤 재사용하는 것인데요. 여러 인스턴스를 생성하면 자원 낭비가 발생해 예기치 못한 결과가 발생하는 경우를 예방하기 위해 사용됩니다. 예를 들어, 커넥션 풀, 디바이스 설정 객체 등이 존재하지요. 다시 한 번 더 이야기하자면, 싱글턴 패턴을 적용할 경우 의미상 두 개의 객체가 존재할 수 없으며, 필요한 요소는 다음과 같습니다. 생성자 제약 : new를 생성할 수 없도록 생성자에 private접근자를 지정합니다. 유일한 단일 객체 반환을 위해 정적 메서드(static method)가 필요합니다. 직접적으로 생성자를 통해 인스턴스를 생성하지 않고, ..
스프링 삼각형과 설정 정보 (2) AOP AOP [ Aspect-Oriented Programming ] 직역하자면 '관점 지향 프로그래밍'이다. DI는 의존성에 대한 주입이라면, 스프링 AOP는 로직(code) 주입이라고 할 수 있다. 프로그램을 작성하다 보면 다수 모듈이 공통적으로 나타나는 부분이 존재하는데, 이를 횡단 관심사(Cross-cutting concern)이라고 한다. 이 말이 이해가 되지 않는다면 DB와 연결할 때 코드를 생각하면 된다. ( 책 284 페이지 참고 ) 코드 = 핵심 관심사 + 횡단 관심사 이 말은 무엇이냐, 공통적으로 나타나는 횡단 관심사와 모듈별로 다르게 나타나는 핵심 관심사로 이루어져있다는 것이다. 앞서 AOP는 로직 주입이라고 설명하였는데, 로직을 주입한다면 어디에 주입할 수 있는가? 위 그림처럼 총 다섯 ..
스프링 삼각형과 설정 정보 (1) IoC/DI 스프링 삼각형과 설정 정보 스프링을 이해하기 위해 POJO [ Plain Old Java Object ]를 기반으로 스프링 삼각형이라는 IoC/DI, AOP, PSA라고 하는 3대 프로그래밍 모델에 대한 이해가 필수이다. POJO 오래된 방식의 간단한 자바 오브젝트라는 뜻으로, JAVA EE 등 중량 프레임워크들을 사용하며 해당 프레임워크에 종속된 무거운 객체를 만들게 된 것에 반발해 사용하게 된 용어이다. 쉽게 이야기하자면, 특정 기술에 종속되어 동작하는 것이 아닌 순수한 자바 객체를 이야기하는 것이다. POJO에 대해서는 다음에 자세히 살펴보도록 하자. IoC/DI : 제어의 역전/의존성 주입 프로그래밍에서의 의존성이란? 책에서 설명하기를.. 의사 코드 운전사가 자동차를 생산한다. 자동차는 내부적으로..
스프링디자인패턴(3) 데코레이터 패턴 - Decorator Pattern 데코레이터 패턴 [ Decorator Pattern ] Decorator는 장식자라고 보면 됩니다. 이는 해석 그대로 원본에 장식을 더하는 패턴입니다. 이는 Proxy 패턴과 구현 방법은 동일하지만, 반환 값에 장식을 입힌다는 것에 차이를 갖고 있습니다. 즉, 데코레이터 패턴을 통해 추가적 요건을 동적으로 추가하는 것입니다. 둘의 차이를 한 번 더 정리하자면 아래 표와 같습니다. 데코레이터 패턴 UML 위 그림은 데코레이터 패턴의 기본 UML입니다. 데코레이터 패턴 특징 가장 큰 특징은 메서드 호출 반환 값에 변화를 주기 위해 중간에 장식자를 두는 패턴입니다. 확장에는 열려있고, 변경에는 폐쇄적이라는 점에서 OCP 원칙과 추상화된 인터페이스에 의존한다는 점에서 DIP 원칙이 적용되어야 합니다. 즉, 디자..
스프링디자인패턴(2) 프록시 패턴 - Proxy Pattern 프록시 패턴 (Proxy Pattern) Proxy는 대리인을 뜻하는 것으로, 청와대의 대변인을 생각하면 쉽습니다. 청와대 대변인들은 본인 의견을 말하기 보다 입장을 대리해서 이야기하는데, 이 개념이 엔티티에 적용되었다고 생각하면 됩니다. 프록시 패턴은 Service 메서드가 가진 메서드와 같은 이름을 사용하는데, 이를 위해 인터페이스를 이용합니다. 즉, 인터페이스로 구현을 강제하는 것이지요. 이로 같은 이름의 메서드가 구현되는데, 클라이언트는 실제 서비스 객체로 값을 받는지 프록시로 값을 받는지 알 수 없습니다. 여기서 중요한 포인트가 존재합니다. 대변인은 공식 입장문에 자신의 이야기를 추가하지 않지요? 그것처럼 프록시 패턴도 반환되는 결과 값을 그대로 반환할 뿐, 절대 무언가를 가감하지 않고 순수하게..
스프링 디자인패턴(1) 어댑터 패턴 - Adapter Pattern 디자인패턴 (Design Pattern) 객체 지향 특성과 설계 원칙을 기반으로 구성됨 실제 개발 현장에서 비즈니스 요구 사항을 프로그래밍으로 처리하며 만들어진 해결책 중 많은 이들이 인정한 방식으로 정리한 것 어댑터 패턴 (Adapter Pattern) 어댑터를 직역하자면 변환기이며, 이 패턴 또한 마찬가지로 서로 다른 두 인터페이스 사이 통신이 가능하게 한 것이다. 즉, 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 전환한 것이다. 고로 어댑터 패턴을 이용하면 호환성 문제로 같이 쓸 수 없는 클래스를 연결해서 사용할 수 있다. 대표적인 예시로 ODBC와 JDBC, JVM이 존재한다. 어댑터 패턴 또한 확장에는 열려있으나, 변경에는 닫혀있어 SOLID 원칙 중 OCP을 따른다..