Spring/Spring 이야기

토비 스프링 공부 - 자바빈

seungdols 2016. 7. 2. 10:47
자바빈

원래 비주얼 툴에서 조작 가능한 컴포넌트를 말했다. 자바의 주력 플랫폼이 웹 기반의 엔터프라이즈 방식으로 바뀌면서 비주얼 컴포넌트로서 자바빈은 인기가 없어졌지만 JSP 빈, EJB와 같은 표준 기술과 자바빈의 스타일의 오브젝트를 사용하는 오픈소스 기술을 통해 계속 이어져왔다.
하지만 현재 자바빈은 두 가지 관례를 따라 만들어진 오브젝트를 가리킨다. 
1. 디폴트 생성자
    자바빈은 파라미터가 없는 디폴트 생성자를 갖고 있어야 한다. 툴이나 프레임워크에서 리플렉션을 이용해 오브젝트를 생성하기 때문이다.
2. 프로퍼티 
     자바빈이 노출하는 이름을 가진 속성을 프로퍼티라 한다. 프로퍼티는 SET으로 시작하는 수정자 메소드/접근자 메소드(getter/setter)를 이용해 수정 또는 조회 할 수 있다.

리팩토링

리팩토링은 기존의 코드를 외부의 동작방식에는 변화 없이 내부구조를 변경해서 재구성하는 작업 또는 기술을 말한다.
리팩토링을 하면 코드 내부의 설계가 개선되어 코드를 이해하기가 더 편해지고, 변화에 효율적으로 대응할 수 있다. 결국 생산성은 올라가고, 코드의 품질은 높아지                  며, 유지보수하기 용이해진다. 리팩토링이 필요한 코드의 특징을 나쁜 냄새라고 표현한다. 대표적으로 중복되는 코드를 꼽을 수 있다. 

프로그래밍의 기초 개념인 관점의 분리/Extract Method




디자인 패턴
   
소프트웨어 설계시 특정 상황에서 자주 만나는 문제를 해결하기 위해 사용 할 수 있는 재사용 가능한 솔루션을 말한다.
디자인 패턴은 주로 객체지향 설계에 관한 것이고, 대부분 객체지향적 설계 원칙을 이용해 문제를 해결한다.

템플릿 메소드 패턴

상속을 통해 슈퍼클래스의 기능을 확장할 때 사용하는 가장 대표적인 방법이다. 변하지 않는 기능은 슈퍼클래스에 두고, 변하며 확장할 기능은 서브클래스에서 만들도록 하는 것이다. 서브 클래스에서 선택적으로 오버라이드할 수 있도록 만든어둔 메소드를 훅 메소드라고 한다. 

팩토리 메소드 패턴

슈퍼클래스 코드에서는 서브클래스에서 구현할 메소드를 호출해서 필요한 타입의 오브젝트를 가져와 사용한다. 이 메소드는 주로 인터페이스 타입으로 오브젝트를 리턴하므로 서브클래스에서 정확히 어떤 클래스의 오브젝트를 만들어 리턴할지는 슈퍼클래스에서는 알지 못한다. 
서브클래스는 다양한 방법으로 오브젝트를 생성하는 메소드를 재정의 할 수 있다. 이렇게 서브 클래스에서 오브젝트 생성 방법과 클래스를 결정 할 수 있도록 미리 정의 해준 메소드를 팩토리 메소드라 하고, 이 방식을 통해서 오브젝트 생성방법을 나머지 로직, 즉 슈퍼클래스의 기본 코드에서 독립시키는 방법을 팩토리 메소드 패턴이라고 한다. 그러나 자바에서는 오브젝트를 생성하는 기능을 가진 메소드를 종종 팩토리 메소드라고도 하는데 위의 메소드와는 차이가 존재한다.

개방 폐쇄 원칙

OCP(Open-closed-principle)이란 깔끔한 설계를 위해서 사용하는 원칙이며, 클래스나 모듈은 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다고 말 할 수 있다.

객체지향 설계 원칙 - SOLID

SRP - The Single Responsibility Principle 단일 책임원칙
OCP - The Open Closed Principle            개방 폐쇄 원칙
LSP - The Liskov Substitution Principle     리스코프 치환 원칙
ISP - The Interface Segregation Principle 인터페이스 분리 원칙
DIP - The Dependency Inversion Principle 의존 관계 역전 원칙

전략패턴 

자신의 기능 맥락(Context)에서 필요에 따라 변경이 필요한 알고리즘을 인터페이스를 통해 통째로 외부로 분리시키고, 이를 구현한 구체적인 알고리즘 클래스를 필요에 따라 바꿔서 사용할 수 있게 하는 디자인 패턴이다.


IoC 

제어의 역전이라고도 말하며, 프로그램의 제어 흐름 구조가 뒤바뀌는 것으로 말 할 수 있다. 제어의 역전에서는 오브젝트가 자신이 사용할 오브젝트를 스스로 선택하지 않는다. 당연히 생성하지도 않고, 자신도 어떻게 만들어지고 어디에 사용되는지 알 수 없다. 모든 제어 권한을 자신이 아닌 다른 대상에게 위임하기 때문이다.  프로그램의 시작을 담당하는 main()과 같은 엔트리 포인트를 제외하고 모든 오브젝트는 이렇게 위임받은 제어 권한을 갖는 특별한 오브젝트에 의해 결정되고 만들어진다. 

스프링 IoC
스프링에서는 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트를 빈이라고 부른다. 자바빈 또는 엔터프라이즈 자바빈에서 말하는 빈과 비슷한 오브젝트 단위의 어플리케이션 컴포넌트를 말한다. 동시에 스프링 빈은 스프링 컨테이너가 생성과 관계설정, 사용등을 제어해주는 제어의 역전이 적용된 오브젝트를 말한다.

스프링에서 빈의 생성과 관계 설정 같은 제어를 담당하는 IoC 오브젝트를 빈 팩토리라고 부른다. 보통은 이를 더 확장한 어플리케이션 컨텍스트를 사용한다.  빈 팩토리는 빈을 생성하고 관계를 설정하는 IoC의 기본 기능에 초점을 맞춘것이고, 어플리케이션 컨텍스트는 어플리케이션 전반에 걸쳐 모든 구성요소의 제어 작업을 담당하는 IoC 엔진이라는 의미가 좀 더 부각 된다고 보면 된다. 


이 자료가 벌써 11개월전입니다. 그런데도 토비 스프링을 다 보지 못했네요...(아무래도, 너무 두껍고 입문하기가 어렵다는 점이 이유인 것 같습니다.)
이제 다시 토비 스프링 공부를 시작합니다.


반응형