AOP어플리케이션 작성 (annotation)이란?


Aspect 클래스 선언 및 설정

Aspect 클래스 구현의 이해

Aspect 테스트


SpringAOP 구현방식

- XML

- Annotion


annotation 방식

- @Aspect 사용한다.

- XML설정파일에 <aop:aspectj-autoproxy />를 설정한다.


@Aspect 란?

- Aspect 클래스 선언할 때 사용한다.

- AspectJ 5버전에 새롭게 추가된 어노테이션이다.

- @Aspect 어노테이션을 이용할 경우 XML 설정 파일에 어드바이스와

포인트컷을 설정하는 것이 아니라 클래스 내부에 정의할 수 있다.

- <aop:aspectj-autoproxy />태그를 설정파일에 추가해서 사용한다.



xml설정파일에 추가



@Before("pointcut")

- 타겟 객체의 메서드가 실행되기 전에 호출되는 어드바이스이다.

- JoinPoint를 통해 파라미터 정보를 참조한다.


@After("pointcut")

- 타겟 객체의 메서드가 정상 종료됐을 때와 예외가 발생했을 때 모두 호출되는 어드바이스이다.

- 리턴값이나 예외를 직접 전달받을 수는 없다.


@Around("pointcut")

- 타겟 객체의 메서드가 호출되는 전,후 모든 과정을 담을수있는 강력한기능을 가진 어드바이스이다.


@AfterReturning(pointcut="",returning="")

- 타겟 객체의 메서드가 정상적으로 실행을 마친 후에 호출되는 어드바이스이다.

- 리턴값을 참조할 때는 returning 속성에 리턴 값을 저장할 변수 이름을 지정해야한다.


@AfterThrowing(pointcut="",throwing="")

- 타겟 객체의 메서드가 예외가 발생하면 호출되는 어드바이스이다.

- 발생된 예외를 참조할 때는 throwing속성에 발생한 예외를 저장할 변수이름을 지정해야한다.


@Before 어드바이스

- @Before 어드바이스를 이용해서 실행되는 타겟 객체의 메서드명과 파라미터를 출력하는 어드바이스이다.

- 아래의 before 메서드는 myspring 패키지 또는 그 하위 패키지에 있는 모든

public 메서드가 호출되기 이전에 호출된다.

ex)


@AfterReturning 어드바이스(정상적으로 종료되었을때)

- @AfterReturning어드바이스를 이용해서 실행되는 타겟 객체의 메서드명과 리턴값을 출력하는 어드바이스이다.

- 아래의 afterReturning 메서드는 myspring.user.service 패키지 하위에 있는 모든 public 메서드가 정상 종료된 이후에 호출된다.

- 리턴값을 참조할 때는 returning 속성을 이용해서 리턴 값을 담을 변수 이름을 지정해야한다.



@AfterThrowing 어드바이스(예외가 발생하였을때)

- @AfterThrowing 어드바이스를 이용해서 실행되는 타겟 객체의 메서드명과 예외메시지를 출력하는 어드바이스이다.

- 아래의 afterThrowing 메서드는 클래스명이 UserService로 시작되는 클래스에 속한 모든 메서드가 예외가 발생된 이후에 호출된다.

- 발생된 예외를 참조할 때는throwing 속성을 이용해서 예외객체를 담을 변수이름을 지정해야한다.



@After 어드바이스(정상적,예외 둘다 모두 호출)

- @After 어드바이스를 이용해서 실행되는 타겟 객체의 메서드명을 출력하는 어드바이스이다.

- afterFinally 메서드는 메서드명이 User로 끝나는 메서드들이 정상 종료됐을 때와 예외가 발생했을때 모두호출된다.

- 반드시 반환해야 하는 리소스가 있거나 메서드 실행 결과를 항상 로그로 남겨야하는 경우에 사용할 수 있다.

하지만 리턴 값이나 예외를 직접 전달받을 수는 없다.



'개발 소발 > 개발 Spring' 카테고리의 다른 글

Mybatis 셋팅이란?  (0) 2017.12.21
MyBatis란?  (0) 2017.11.27
AOP어플리케이션 작성 (XML)이란?  (0) 2017.11.24
AOP란?  (0) 2017.11.24
jdbc환경설정(mysql)이란?  (0) 2017.11.21

Junit,Spring-Test란?(의존성예제)


Junit

JunitTest클래스작성

Spring-Test


Junit특징

- TDD 테스트가 가장 중요하다.

- assert메소드제공한다.(테스트결과제공 예상값,실제값제공함.)

- Junit4부터는 테스트 지원하는 어노테이션제공한다.(@Test,@Before,@After)

- 각@Test 메서드가 호출할때 마다 새로운 인스턴스를 생성하여 독립적인 테스트가 이루어지도록한다.


jUnit에서 지원하는 어노테이션


@Test

- 테스트하고자하는 메소드 위에 선언한다.

- 각각의 테스트 메서드가 실행될때 서로영향주지않고 각자실행시킨다.


@Ignore

- 선언된 메서드는 테스트를 실행하지않게한다.


@Before(@Test실행시 매번실행)

- @Test가 실행되기전에 반드시 실행할게 있다면 사용한다.


@After(@Test실행시 매번실행)

- @Test가 실행된 후에 실행되는 메소드이다.


@BeforeClass

@AfterClass

위와같으나 클래스가 한번생성될때만 사용한다.


테스트 결과를 확인하는 단정(Assert)메서드

-assertEquals(a,b);

-객체 일치확인한다.

-assertArratEquals(a,b);

-배열 일치확인한다.

-assertSame(a,b);

-객체의 주소값이 같는지 확인한다.

-assertTrue(a);

-조건a가 참인지 확인한다.

-assertNotNull(a);

-null이아님을 확인한다.






spring-test

Junit확장

@RunWith(SpringJunit4ClassRunner.class)

- Junit테스트 확장할때 사용한다.

- 테스트도중 ApplicationContext를 만들고관리해준다.

- @RunWith 각각의 테스트별로 객체가 생성되더라도 싱글톤의 ApplicationContext를 보장한다.


@ContextConfiguration

- 스프링 빈 설정파일의 위치를 지정할때 사용한다.


@Autowired

- 스프링DI에서 사용되는 특별한 어노테이션이다.

- 해당변수에 자동으로 빈을 매핑해준다.

- 스프링 빈 설정을 읽기위해 굳이 GenericXmlApplicationContext 사용할필요가없다.






'개발 소발 > 개발 Spring' 카테고리의 다른 글

Bean등록 및 메타정보구성이란?  (0) 2017.11.21
bean,properties설정이란?  (0) 2017.11.20
IoC,DI란?  (0) 2017.11.20
STS,maven이란?  (0) 2017.11.20
Spring프레임워크란?  (0) 2017.11.20

+ Recent posts