스프링이 Annotation을 통해 트랜잭션을 처리하는 방법은 앞서 말했듯이 AOP를 사용하고 있습니다. AOP의 비트는 봄 것, 그것이 작동되도록하기 때문에
그래서 그렇게하기 위해 당신은 스프링 컨테이너를 통해 클래스의 인스턴스를 검색 (여기 뽀조)를해야합니다 (doc 참조) 동적 프록시를 사용하여 구현됩니다 주석 처리 된 메소드를 트랜잭션 관리 코드로 자동 둘러싸는 Pojo를 통해 동적 프록시를 리턴합니다.
은 간단하게 할 경우
Pojo p = new Pojo();
p.doInTransaction();
봄은 여기에서 재생할 수있는 역할이없는 당신의 메서드 호출은 트랜잭션 내부되지 않습니다.
그래서 당신이해야 할 일이
ApplicationContext springContext = ...;
Pojo p = (Pojo) springContext.getBean("your.pojo.id");
p.doInTransaction();
주 같은 것입니다 :이 예를 들어, 당신은 대신 그렇게함으로써 상황에 맞는
에서 수동으로 빈을 검색의 의존성 주입을 선호한다, Spring 컨텍스트를 올바르게 설정하면 Spring은 트랜잭션 주석을 스캔하도록 클래스를 관찰하고 bean을 주석 인식 동적 프록시 인스턴스에 자동으로 래핑해야한다. 아무것도 변경하지 않는 당신의 관점에서, 당신은 여전히 자신의 Classes로 객체를 캐스팅 할 것이지만 Spring context Pojo bean의 클래스 이름을 출력하려고한다면 Proxy $와 같은 것을 얻을 것이다. .. 그리고 당신의 최초의 클래스 이름이 아니라.
어쨌든이 링크를 살펴 유무 :
link text