여름나라겨울이야기 240

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

006. 스프링을 통한 의존성 주입 - @Autowired vs @Resource vs <property>

지난 강좌 딱 한달 + 10일이 지났군요. 한달 10일 기념 이벤트성 글은 아니고요. 바로 이전 강좌 댓글 7개!!! 오오.. 행운의 세븐 기념 이벤트성 글입니다. ^^ @Autowired 와 @Resource 어너테이션은 이전 강좌에서 보신 대로 두 객체 사이에 의존성을 해결해 주는 완소 존재입니다. 이 둘을 살짝 비교해보도록 하겠습니다. @Autowired @Resource 제공자 SpringFramework 표준 Java 소속 패키지 org.springframework .beans.factory.annotation .Autowired javax.annotation.Resource bean 검색 byType 먼저, 못 찾으면 byName byName 먼저, 못 찾으면 byType 특이사항 byName..

강좌/Spring 3.0 2013.01.17

005. 스프링을 통한 의존성 주입 - @Resource 를 통한 속성 주입

의사 코드 운전자가 종합 쇼핑몰에서 자동차를 구매 요청한다. 종합 쇼핑몰은 자동차를 생산한다. 종합 쇼핑몰은 타이어를 생산한다. 종합 쇼핑몰은 자동차에 타이어를 장착한다. 종합 쇼핑몰은 운전자에게 자동차를 전달한다. 흠흠 의사 코드를 보죠. 이전 강좌와 동일합니다. (기시감이랄까.. 데자뷰랄까.. 뭐 그런게 느껴지시나요? 뭐 그럴 수도 있죠 ^^;) 지난 번 강좌에서는 @Autowired 를 통한 속성을 주입했었는데요. 자동으로 묶어준다는 의미 보다 더 직관적인 말은 없을까요? 자동차에게 있어 타이어는 재료(?) 또는 자원(?), 부품이라고 할 수 있겠네요. 그리하여 이제부터는 Autowired 라는 표현 대신 Resource 라는 표현을 쓰도록 하겠습니다. 따라서 변경되는 부분은 @Autowired 부..

강좌/Spring 3.0 2012.12.07

004. 스프링을 통한 의존성 주입 - @Autowired 를 통한 속성 주입

000 ~ 005 STS 프로젝트 파일: 의사 코드 운전자가 종합 쇼핑몰에서 자동차를 구매 요청한다. 종합 쇼핑몰은 자동차를 생산한다. 종합 쇼핑몰은 타이어를 생산한다. 종합 쇼핑몰은 자동차에 타이어를 장착한다. 종합 쇼핑몰은 운전자에게 자동차를 전달한다. 흠흠 의사 코드를 보죠. 이전 강좌와 동일합니다. 여기서 질문입니다. 여러분은 프로그래머의 3대 스킬을 아시나요? 1. C&P : Copy & Paste / 복사 & 붙이기 2. D&C : Divide & Conquer / 분할 & 정복 3. C&i : Creative idleness / 창조적 게으름 특히 3번째 스킬은 진정한 고수들의 방법론이죠. 일례로 더 게으르고 싶어진 그루들께서 while 문으로 충분한 걸 for / for each / do ..

강좌/Spring 3.0 2012.11.27

003. 스프링을 통한 의존성 주입 - 스프링 설정 파일(xml)에서 속성 주입

000 ~ 005 STS 프로젝트 파일: ExpertSpring30.zip 의사 코드 - 점점 더 현실 세계를 닮아가고 있습니다. 운전자가 종합 쇼핑몰에서 자동차를 구매 요청한다. 종합 쇼핑몰은 자동차를 생산한다. 종합 쇼핑몰은 타이어를 생산한다. 종합 쇼핑몰은 자동차에 타이어를 장착한다. 종합 쇼핑몰은 운전자에게 자동차를 전달한다. Java 로 표현 ApplicationContext context = new FileSystemXmlApplicationContext("/src/main/java/expert003/expert.xml"); Car car = (Car)context.getBean("car"); XML 로 표현 클래스 다이어그램은 3회째 변화가 없습니다. 그러므로 처음으로 패스해 봅니다. 시퀀스..

강좌/Spring 3.0 2012.11.19

002. 스프링을 통한 의존성 주입 - XML 파일 사용

000 ~ 005 STS 프로젝트 파일: ExpertSpring30.zip 의사 코드 운전자가 종합 쇼핑몰에서 타이어를 구매한다. 운전자가 종합 쇼핑몰에서 자동차를 구매한다. 운전자가 자동차에 타이어를 장착한다. Java 로 표현 - 속성 메서드 사용 ApplicationContext context = new FileSystemXmlApplicationContext("/src/main/java/expert002/expert.xml"); Tire tire = (Tire)context.getBean("tire"); Car car = (Car)context.getBean("car"); car.setTire(tire); 자 이제 드디어 스프링을 통한 의존성 주입을 구현해 보도록 하겠습니다. 스프링을 통한 의존성..

강좌/Spring 3.0 2012.11.19

001_03. 스프링 없이 의존성 주입 2 - 속성을 통한 의존성 주입

전체 강좌 프로젝트 파일: 의사 코드 운전자가 타이어를 생산한다. 운전자가 자동차를 생산한다. 운전자가 자동차에 타이어를 장착한다. Java 로 표현 - 속성 메서드 사용 Tire tire = new KoreaTire(); Car car = new Car(); car.setTire(tire); 지난 강좌에서 생성자를 통해서 의존성을 주입하는 코드를 작성해 보았습니다. 이번 강좌에서는 속성을 통해 의존성을 주입 해보도록 하겠습니다. 생성자를 통해 의존성을 주입하는 것을 다시 실세계의 예로 들어보면 자동차를 생산(구입)할 때 한번 타이어를 장착하면 더 이상 타이어를 교체 장착할 방법이 없습니다. 그러나 더 현실적인 방법으로 운전자가 원할 때 Car 의 Tire 를 교체하려면 생성자가 아닌 속성을 통한 의존성..

강좌/Spring 3.0 2012.11.18

001_02. 스프링 없이 의존성 주입 1 - 생성자를 통한 의존성 주입

000 ~ 005 STS 프로젝트 파일: 의사 코드 운전자가 타이어를 생산한다. 운전자가 자동차를 생산하며 타이어를 장착한다. Java 로 표현 - 생성자의 인자 이용 Tire tire = new KoreaTire(); Car car = new Car(tire); 주입이란? 주입이란 말은 외부에서라는 뜻을 내포하고 있는 단어입니다. 결국 자동차 내부에서 타이어를 생산하는 것이 아니라 외부에서 생산된 타이어를 자동차에 장착하는 작업이 주입입니다. 지난 강좌를 통해 의존성이란 무엇인지를 살펴보았습니다.지난 강좌에서 의존성을 해결한 시퀀스 다이어그램 다시 한 번 살펴보죠. Car 객체가 Tire 를 직접 생산하는, 즉 Tire 에 대한 의존성을 자체적으로 해결하는 방식이었습니다.이번에는 tire 객체를 생산하..

강좌/Spring 3.0 2012.11.18
반응형