스프링 @Configurable을 이용하려면 정적인 컴파일 시점 위빙으로는 안 됩니다. 객체가 필요해서 해당 클래스를 처음 클래스로더가 읽어갈 때.. 그 때 aop.xml 정보를 참조해서 위빙을 해야 합니다. 그게 바로 LTW죠.

-javaagent:/path/to/spring-agent.jar

그러려면 이런 옵션을 VM 인자로 넘겨줘야 합니다. 이클립스에서 JUnit 테스트를 실행할 때도 예외는 아닙니다.


이런식으로 모든 테스트에 인자를 줘야 하는데.. 여간 귀찮은 작업이 아닙니다. 프로젝트 별로 VM 인자를 설정하는 방법이 없나. 모르겠습니다.

메이븐으로 빌드를 하면 당연히 실패하겠죠. 그래서 메이븐에도 설정해줘야합니다. test 할 때 위빙 옵션을 다음과 같이 줄 수 있습니다.

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.4.2</version>
                <configuration>
                    <argLine>-javaagent:weaving/spring-agent.jar</argLine>
                </configuration>
            </plugin>

이클립스 + 콘솔창 한개는 기본으로 들고 개발을 해야겠습니다. 안그래도 git와 mvn war:inplace 때문에 거의 항상 콘솔창 하나를 띄워서 같이 작업하는데, mvn clean test도 애용하게 생겼네요.