추상화 18

016. OOP 추상화 = 모델링

지난 시간 추상화라는 단어의 일반적인 뜻을 알아봤습니다. 추상화란 구체적인 것을 분해해서 관찰자가 관심있는 특성만을 가지고 재조합하는 것이라고 정리할 수 있습니다. 이렇게 정리되시지 않았다구요. 그건 제 잘못입니다. 설명을 제대로 못한 것이죠. ^^ 일단 위의 개념을 머리 속에 두시고 OOP 의 추상화로 이야기를 전개해 보도록 하겠습니다. 객체지향의 4대 특성은 무엇을 통해 구현 될까요? 네 바로 클래스를 통해 구현 됩니다. 또는 객체라고 할 수도 있겠구요. 그런데 여기서 클래스와 객체에 대해서 이야기를 하고 넘어가야 할 듯 합니다. 붕어빵틀 vs 붕어빵은 지금 이 순간부터 버리십시요. 버리셨죠.. ^^ 그럼 먼저 클래스가 뭔지, 객체가 뭔지 이해하기 위해 질문부터 던져보겠습니다. 쥐는 클래스일까요? 객..

강좌/Spring 3.0 2013.02.07

015. 추상 / 추상화

흠 잊고 있었는데 댓글로 추상화 강좌에 대한 이야기가 나와서 이렇게 다시 자판에 앞발을 올려봅니다. 흠흠 추상화 관련 부분은 제가 작성한 부분이 지루하거나 난해할 수 있음으로 건너 뛰시고 바로 스프링 관련 서적으로 가시는 것도 나쁘지 않습니다. ^^ 추상화는 프로그래밍에서 무척 다양한 의미로 사용되는 용어입니다. 일단 객체지향프로그래밍(OOP)에서 말하는 추상화부터해서 스프링의 추상화까지 살펴보면 의미가 달라보이기까지 하는데요. 그러나 결국은 같은 용어를 사용한다면 그 안 깊숙히 숨겨져 있는 공통적인 의미가 있겠죠. 일단 추상화는 영어로 Abstraction 이 되겠습니다. 일단 가장 기초가 될 것 같은 OOP 추상화를 설명할 거라 기대하셨다면 그 기대를 제가 살짝 뭉개 드리도록 하겠습니다. ^^ OOP..

강좌/Spring 3.0 2013.02.06

014. 애너테이션 기반 DI, AOP, 스프링 설정 파일

기존 소스를 가지고 애너테이션을 이용해서 스프링 설정이 얼마나 간편해지는지 알아보도록 하겠습니다. 유지보수는? 더 힘들어집니다. ㅡㅡ; 앞의 강좌들을 쭈욱 보신 분들만 이해 가능합니다. aop006 패키지를 만들고 기존 aop005 패키지 밑에 모든 파일들을 복사 붙여 넣고 수정하시면 빠릅니다. 먼저. expert.xml 입니다. component-scan 이 들어오면서 태그들이 몽땅 사라졌습니다. 헐... component-scan 은 으로 설정 파일에 등록했던 내용들을 별도의 등록없이, 주어진 base-package 밑에 스캔(처음부터 끝까지 살펴보며)하며 자동으로 bean 으로 등록해 줍니다. 자동이기 하지만 Bean 되어야할 클래스가 무엇인지 표식은 해줘야겠지요. 그럼 기존에 Bean 으로 등록되..

강좌/Spring 3.0 2013.01.23

013. AOP - 기초 완성

이번 시간에는 Before 어드바이스와 After 어드바이스를 살펴보도록 하겠습니다. 그런데 이미 AOP 이전 강좌에서 Before 어드바이스를 살펴봤네요. 그래서 생략.. 다만 기억할 것은 Before 어드바이스는 해당 Jointpoint 메서드 실행 전에 실행 된다는 사실을 기억해 주시면 되겠습니다. 그럼 After 어드바이스는? 당연히 해당 Joinpoint 메서드 실행 후에 실행되겠군요. 소스로 이야기해 봅시다. 기존 aop003 패키지를 복사해서 aop004 패키지를 만들었습니다. 변할 곳은 짐작이 되시나요? 네 딱 두 곳입니다. Advice 를 만드는 클래스와 Spring AOP 설정이죠. 변경된 MyAspect.java 입니다. package aop004; import org.aspectj...

강좌/Spring 3.0 2013.01.23

012. AOP 일단 덤벼 보자 - POJO & XML 기반 AOP

이번 강좌에서는 기존에 작성한 AOP 예제를 애너테이션(@) 기반에서 POJO & XML 기반으로 변경해 보도록 하겠습니다. POJO 가 뭔지 모르신다구요? 그건 다른 강좌를... 설명하기가 그리 길진 않치만... 제가 게을러서이기도 하지만... 자꾸 삼천포로 안 빠지려구... 계속 변명 중... 이 시간에 설명했으면 이미... 그래도 지나갔으니.. 쿨락 변경할 곳은 딱 2 군데 뿐입니다. 먼저 MyAspect.java 되겠습니다. 기존 신규 @ 애너테이션 기반 SpringFramework 종속 POJO & XML 기반 SpringFramework 에 대한 종속성이 없음 package aop002; import org.aspectj.lang.JoinPoint; import org.aspectj.lang...

강좌/Spring 3.0 2013.01.23

011. AOP 일단 덤벼 보자 - 용어편

모든 조직은 그들만의 용어가 있습니다. 그 용어를 이해하지 못하면서 그 조직을 이해한다는 생각는 오해를 낳을 뿐이죠. AOP 에서도 그들만의 용어가 있는데 그 용어들을 소스와 비교해서 정리해 보겠습니다. Aspect Advisor Advice Pointcut Joinpoint 위 5 가지 용어가 AOP 를 이해하는데 필수이면서 전부인 용어입니다. 그리고 Spring AOP 에 숨어있는 Proxy.. 이건 앞 강좌를 참고하세요. 그럼 쉬운 순서로 설명해 보겠습니다. Pointcut - 자르는 지점??? Aspect 적용 위치 지정자!!! package aop002; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.Aspect; i..

강좌/Spring 3.0 2013.01.23

010. AOP 일단 덤벼 보자 - 설명편

지난 009 강좌를 통해 횡당관심사항을 완벽하게 분리하는 예제를 실습해 보았는데요. 이번 강좌에는 이론적인 토대를 마련해 보도록 하겠습니다. AOP 적용 전후의 Boy.java 와 관련 코드를 비교해 보도록 하겠습니다. AOP 적용 전 AOP 적용 후 package aop001; public class Boy { public void housework() { System.out.println("열쇠로 문을 열고 집에 들어간다."); try { System.out.println("컴퓨터로 게임을 한다."); } catch (Exception ex) { if(ex.getMessage().equals("집에 불남")) { System.out.println("119 에 신고한다."); } } finally { ..

강좌/Spring 3.0 2013.01.23

009. AOP 일단 덤벼 보자 - 실전편

지난 시간에 Boy.java, Girl.java 를 만들어서 횡단관심사항과 핵심관심사항이 무엇인지를 살펴 보았습니다. 그럼 여기서는 일단 AOP 적용을 위해 Boy.java 만 바꾸어 보도록 하겠습니다. Spring AOP 를 쉽게 적용하기 위해서는 인터페이스 기반으로 Boy.java 를 변경하는 것이 유리합니다 (굳이 안해줘도 되긴 하지만 많이 귀찮습니다. 인터페이스 만드는 것이 오히려 편합니다. 상세한 내용은 제 AOP 강좌 이후에 스프링 인 액션, 토비의 스프링 등등을 강츄합니다.) aop002 패키지를 만들었습니다. IPerson 이라는 인터페이스를 추가했습니다. package aop002; public interface IPerson { void housework(); } IPerson 을 구현..

강좌/Spring 3.0 2013.01.22

008. AOP - Aspect? 관점? 핵심관심사항? 횡단관심사항?

스프링의 핵심 그 두번째는 AOP 입니다. AOP 의 풀영문은 Aspect-Oriented Programming 이고 이걸 한글화 했더니 관점 지향 프로그래밍이 되어버립니다. 그럼 관점이란 또 무엇이냐를 따지고 싶겠지만 그러지 마세요. 그냥 Aspect 로 기억하시는게 좋습니다. 스프링 DI 가 의존성(new) 에 대한 주입이라면 스프링 AOP 는 로직(code) 주입이라고 볼 수 있습니다. 여러 책과 블러그 등을 통해 AOP 개념에 대해 잘 설명되어 있는데요. 여기에 허접한 설명을 더 하나 추가해 봅니다. 일단 AOP 라는 글귀에서 OOP 가 생각나실 것이고 "그럼 OOP 다음이 AOP 인가?" 라는 오해를 하실 수 있는데 결코 아닙니다. 위의 그림을 보시고 바로 "아~" 이런 느낌이 오시나요? 로깅,..

강좌/Spring 3.0 2013.01.22

007. 의존성 주입 DI 초급 마무리

이번 강좌는 어렵습니다. 그냥 쭈욱 흩어보시고 밑에 결론만 보셔도 됩니다. ^^ IoC : 제어 역전 Inversion Of Control DI : 의존성 주입 Dependency Injection IoC 라고도 하고 DI 라고도 하고 때로는 IoC/DI 라고하는 제억 역전에서 말하는 의존성이 무엇인지 강좌들을 통해 살펴보았습니다. 가장 단순하게 표현하자면 "의존성이란 java 언어에서 new 다." 라고 제가 설명을 드렸죠. 사실 이해를 위해 최대한 단순하게 설명을 드린 것입니다. 더 많은 내용은 이일민님의 "토비의 스프링" 에 좋은 내용이 있습니다. 그리고 DI 외에 DL(Dependency Lookup 의존성 검색)이라고 하는 기법도 있습니다. 이걸 벤다이어그램(기억나시죠.. 학창 시절)으로 표현해..

강좌/Spring 3.0 2013.01.19
반응형