programing

@Transactional은 어디에 두나요?인터페이스 사양 또는 구현 시?

firstcheck 2023. 8. 1. 21:37
반응형

@Transactional은 어디에 두나요?인터페이스 사양 또는 구현 시?

다음을 배치할 때 가장 좋은 방법은 무엇입니까?@Transactional주석?인터페이스 방법 또는 구현에 주석을 달아야 합니까?

이 모든 것은 애플리케이션 아키텍처에 달려 있다고 생각합니다.클래스를 프록시하는 방법에 따라 다릅니다.앱이 다음으로 설정된 경우proxy-target-class='true'(응용프로그램 컨텍스트에서는@Transactional인터페이스에 주석을 달면 정보가 수집되지 않습니다.

자세한 내용은 Spring Docs -- "Tips"를 확인하십시오.

인터페이스에 주석을 다는 것이 아니라 @Transactional 주석을 사용하여 구체적인 클래스(및 구체적인 클래스의 메서드)에만 주석을 다는 것이 좋습니다.인터페이스(또는 인터페이스 메서드)에 @Transactional 주석을 배치할 수 있지만, 이는 인터페이스 기반 프록시를 사용하는 경우에만 사용자가 예상하는 대로 작동합니다.자바 주석이 인터페이스에서 상속되지 않는다는 것은 클래스 기반 프록시(module-target-class="true") 또는 위빙 기반 측면(mode="dllj")을 사용하는 경우 프록시 및 위빙 인프라에서 트랜잭션 설정을 인식하지 못하고 객체가 트랜잭션 프록시로 감싸지지 않는다는 것을 의미합니다.그것은 분명히 좋지 않을 것입니다.

좋은 질문입니다.저는 항상 그것을 구현에 넣었습니다.아마도 추상화라기보다는 구현 세부사항이기 때문일 것입니다.

여러 구현에서 서로 다른 트랜잭션 동작을 사용하기를 원할 수도 있습니다.

El Guapo는 그 외에도 프록시 전략과 관련하여 인터페이스를 착용함으로써 발생할 수 있는 문제가 더 많다고 언급했습니다.

트랜잭션 관리는 대부분의 경우 구현 세부사항이지만 인터페이스 세부사항이기도 합니다.예를 들어, 애플리케이션의 서비스 인터페이스를 정의할 때 다음을 고려할 수 있습니다.@Transactional인터페이스 정의에 추가하여 사용 중인 전파 전략을 구체적으로 설명합니다.

시스템에서 인터페이스를 사용하지 않습니다. 아직까지는 이 인터페이스를 통해 무엇이든 구현할 수 있을지 알 수 없기 때문입니다.그래서 저는 구현에 주석을 달았고 저는 봄이 저에게 모든 것을 올바르게 해줄 것이라고 믿습니다.

저는 모든 수업에 인터페이스가 있어야 한다고 생각하지 않습니다.저는 많은 패턴을 가진 많은 건축물들을 보았고 그들은 모두 인터페이스를 좋아합니다.하지만 질문이 있습니다. Spring 주석을 인터페이스에 삽입하고 어떤 이유로 이 인터페이스를 통해 수행되는 구현 클래스의 트랜잭션에 대한 다른 접근 방식을 원한다면 그렇게 할 수 없습니다.아니면 제가 틀렸나요?

건배.

언급URL : https://stackoverflow.com/questions/5551541/where-to-put-transactional-in-interface-specification-or-implementation

반응형