@Configuration: 애플리케이션 컨텍스트 또는 빈 팩토리가 사용할 설정정보라는 표시.
@Bean: 오브젝트 생성을 담당하는 IoC용 메소드라는 표시.
@Autowired: 스프링의 DI에 사용되는 특별한 애노테이션. 변수에 할당가능한 타입을 가진 빈을 자동으로 찾는다.
@RunWith: JUnit 프레임워크의 테스트 실행방법을 확장할 때 사용된다.
@ContextConfiguration: 자동으로 만들어줄 애플리케이션 컨텍스트의 설정파일 위치를 지정한다.
@Test(expected=EmptyResultDataAccessException.class): 예외조건 테스트할 때 사용된다. 메소드 실행 중 예외가 발생하여 EmptyResultDataAccessException이 던져지면 성공, 아니면 실패다.
@Before: @Test 메소드 하나가 실행되기 전에 먼저 실행돼야 하는 메소드를 정의한다.
@After: @Test 메소드 하나가 실행된 후 실행되는 메소드를 정의한다.
-> (테스트 클래스의 오브젝트 생성 -> @Before -> @Test -> @After: 테스트 메소드 갯수만큼 반복한다.)
@DirtiesContext: 테스트 메소드에서 애플리케이션 컨텍스트의 구성이나 상태를 변경한다는 것을 테스트 컨텍스트 프레임워크에 알려준다. 해당 메소드의 실행이 끝나고 나면 이후에 진행되는 테스트를 위해 변경된 애플리케이션 컨텍스트는 폐기되고 새로운 애플리케이션 컨텍스트가 만들어진다.