본문 바로가기

분류 전체보기

(146)
[SPRING] 4-2. AOP 설정 및 활용 그렇다면 이제 AOP를 설정하고 활용하는 방법에 대해서 살펴보겠습니다. 먼저 xml로 설정하는 방법입니다. 먼저 MVNRepository 홈페이지를 통하여 aspectj라이브러리를 pom.xml에 설정해 주겠습니다. 메소드의 실행시간을 알아보기 위해 일단 beforeMethod를 만들어주겠습니다. AOP 설정을 추가합니다. aop-context.xml을 생성하여 bean을 설정해주고 을 등록해주겠습니다. web.xml에 aop-context.xml의 설정파일을 추가하여줍니다. login시 logger를 확인할 수 있습니다. Around기능을 이용하여 메소드의 실행시 시작과 끝의 시간을 계산하여 메소드 실행시간을 알아보는 예제입니다. around는 메소드 실행 전과 후에 실행되는 aop의 기능입니다. ao..
[SPRING] 4-1. AOP (Aspect Oriented Programming) 이해하기 이번 챕터4 에서 살펴 볼 내용은 AOP에 관한 내용입니다. AOP란 Aspect Oriented Programming 으로써 여러 클래스로 분산된 책임(기능)을 별도의 관점으로 분리/캡슐화 하는 프로그래밍 방법입니다. 관점지향적 프로그래밍이란 공통의 관심사항을 분리하는 것, 핵심기능과 부가기능을 분리하고 OOP를 대체하는 것이 아니라 보완하기 위한 것입니다. AOP는 DB 준비와 해제 / 반환 작업과 메소드 마다 반복되는 작업에서 필요하게됩니다. 코드를 살펴보면 SQL을 처리하는 부분보다 반복되는 코드의 양이 더 많은것을 알 수 있습니다. 이런 반복된 코드를 AOP를 이용해서 여러 클래스로 분산된 책임(기능)을 별도의 관점으로 분리/캡슐화 하는 프로그래밍 방법으로 분리해 줄 수 있습니다. 메소드의 시작..
[SPRING] 3-2. 타입변환 타입변환에 대하여 알아보겠습니다. 먼저 자바와 ORACLE 에서의 타입변환의 예제입니다. xml 자체에는 타입의 표기법없이 형변환을 알아서 합니다. 객체의 필드(속성)에 값을 주입시 xml에서는 문자열과 숫자 구분이 되지 않지만 해당 필드의 타입을 보고 스프링 컨테이너가 적당한 형변환을 통해 값을 주입합니다. 단, 날짜에 대해서는 스프링 프레임워크에서 기본전략을 제공하지 않기 때문에 개발자가 별도로 설정을 해줘야합니다. 타입변환은 bean 속성주입과 controller 메소드의 파라미터 바인딩에서 필요합니다. xmL은 물자열로 설정합니다 문자열이 클래스로 변환되고, collection(list, set) 으로 변환됩니다. 스프링에서 기본으로 전환되지 않는 타입은 문자열이 Date타입입니다. dateFor..
[SPRING] 3-1. Annotation-based 빈 등록 및 의존관계 설정 Annotation을 이용하여 빈을 구성하는 것과 java config를 통해 스프링 컨테이너를 구성하는 법을 알아보겠습니다. annotation-base 빈 조회를 설정하는 법을 보겠습니다. conponent-scan.xml 을 생성하여 빈을 조회하는 설정을 해보도록 하겠습니다. 을 통해 base-package 속성에 설정된 패키지의 하위 패키지를 포함하여 모든 클래스를 scan 하여 클래스 중에 @Controller, @Service, @Repository, @Component 어노테이션이 붙은 클래스를 스프링 빈으로 등록하도록 설정합니다. 를 이용하여 @Resource, @Autowired, @Inject 해당 어노테이션을 작업해주는 스프링 설정을 해주어 BeanPostProcessor 빈이 생성된..
[SPRING] 2-2. Bean의 Scope bean scope는 singleton의 패턴을 가집니다. singleton은 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴하는 디자인 패턴을 말합니다. spring scope에서의 singleton은 spring 컨테이너에서 같은 이름의 bean은 하나만 존재하는 것을 말합니다. 디자인 패턴과 다르게 같은 클래스에서 다른 이름을 갖는 스프링 빈이 존재가 가능합니다. 즉, 엘리먼트에서 선언한 id, name 별로 객체가 관리된다는 의미입니다. 이로써 class 속성이 동일한 bean이 여러개 존재 할 수 있습니다. 스프링 빈 scope의 기본값은 singleton입니다. 엘리먼트에서 선언한 id, name 별로 객체가..
[SPRING] 2-1. DI를 이용한 객체 생성 (3) Servlet(Controller)만 servlet Container에서 관리됩니다. servlet-mapping, servlet-url, @WebServlet으로 요청되며 요청에 따라 tomcat(servlet-container)이 실행할 servlet을 판단합니다. Spring container는 등록한 객체를 전부 관리합니다. service 객체를 container에서 관리함으로써 선언적 트랜잭션이 가능합니다. bean 설정 파일을 통해 등록합니다. 트랜잭션에 대한 관리인 직접 커밋과 롤백을 하지 않아도 예외와 성공 여부에 따라 자동으로 이루어집니다. 코드가 복잡해지는 경우에는 생각보다 힘들기 때문에 아주 편리한 부분입니다. VO는 공유되는 것이 아니기 때문에 사용할 때 생성하여 사용합니다. XML..
[SPRING] 2-1. DI를 이용한 객체 생성 (2) Spring IOC를 이용한 방법을 살펴보겠습니다. 기존의 방법은 객체 생성을 분리할 수는 있지만, 객체 생성을 맡는 객체에 대한 의존성이 생깁니다. 우리는 객체 생성을 개발자가 담당하기 때문에 발생하는 문제를 해결하고 싶습니다. 즉, 필요한 속성이 모두 설정된 객체를 갖고 싶습니다. 그러기 위해서는 객체를 생성하는 설명서와 함께 제어권을 다른 무엇인가에게 위임을 하여야 합니다. 그것을 바로 객체를 관리하는 컨테이너인 Spring IOC 컨테이너라고 합니다. Spring IOC를 적용하기 위해서는 몇가지 환경설정이 필요합니다. maven repository 홈페이지에서 spring을 검색한 후 1~7번째 까지 복사하여 pom.xml에 dependency 추가를 해줍니다. properties로 등록하여 버..
[SPRING] 2-1. DI를 이용한 객체 생성 (1) DI를 이용한 객체 생성에 대해서 알아보겠습니다. 먼저 IOC(inversion Of control) 컨테이너를 이해하는 시간을 가져봅시다. 스프링컨테이너를 IOC컨테이너 즉, 컨테이너라고 합니다. 스프링 빈을 생성,관리하는 객체를 뜻하며 서블릿 컨테이너에서 httpServlet 클래스를 상속하여 작성한 서블릿을 관리 하는 것과 유사합니다. 서블릿 컨테이너를 통해 서블릿을 관리할 때 얻을 수 있는 점은 url을 호출했을 때 매핑된 서블릿의 service 메소드를 호출 할 수 있습니다. 이는 개발자가 servlet 코드를 직접 실행하지 않아도 되며 실행에 대한 제어가 서블릿 컨테이너에게 있다는 것입니다. 개발자는 servlet 스팩에 맞도록 서블릿을 작성하기만 하면됩니다. DI(Dependency Inje..