@Component
public class Controller {
@Autowired
private MyService service;
public void handleRequest() {
service.save(); // ✅ 프록시를 통해 호출 → 트랜잭션 O
}
}
@Service
public class MyService {
@Transactional
public void outer() {
inner(); // ❌ 직접 호출 → 프록시 통과 X → 트랜잭션 적용 안 됨
}
@Transactional
public void inner() {
// 여기에 트랜잭션 안 걸림
}
}
@Autowired
private MyService self;
public void outer() {
self.inner(); // ✅ ApplicationContext에서 주입된 프록시 → OK
}