인프런 커뮤니티 질문&답변

김태언님의 프로필 이미지
김태언

작성한 질문수

스프링 DB 2편 - 데이터 접근 활용 기술

트랜잭션 AOP 주의 사항 - 프록시 내부 호출2

@Transactional 적용되는 접근제어자 관련 질문

작성

·

34

·

수정됨

0


[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

[질문 내용]
강의에서 @Transactional 애노테이션이 붙여있어도 public이 아니면 AOP가 적용이안된다고하고 V1 테스트의 internal에서 public을 지우고 했을때 적용이안된다고하셨는데 저는 public을 지워도 되더라고요

 

@Test
void internalCall(){
    callService.internal();
}

 

@Transactional
void internal(){
    log.info("call internal");
    printTxInfo();
}

 

결과화면

스크린샷 2024-11-10 오후 11.35.17.png

 

이유를 알고싶습니다.

Dependencies관련 build.gradle 버전

 

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.3.5'
    id 'io.spring.dependency-management' version '1.1.6'
}

group = 'hello'
version = '0.0.1-SNAPSHOT'

java {
    toolchain {
       languageVersion = JavaLanguageVersion.of(21)
    }
}

configurations {
    compileOnly {
       extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

    //테스트에서 lombok 사용
    testCompileOnly 'org.projectlombok:lombok'
    testAnnotationProcessor 'org.projectlombok:lombok'
}

tasks.named('test') {
    useJUnitPlatform()
}

 

스크린샷 2024-11-10 오후 11.37.42.png



답변 1

0

안녕하세요. 김태언님, 공식 서포터즈 y2gcoder입니다.

사용하고 계신 스프링 부트 3.3.5는 기본적으로 스프링 6버전 이상을 사용하게 됩니다!

스프링 6버전부터는 public 뿐만 아니라 protected, package-private 접근 제어자에서도 @Transactional 을 이용한 선언적 트랜잭션 열기를 허용하고 있습니다.

image.png

출처(클릭)을 참고해보시면 좋을 것 같습니다 🙂

 

 

감사합니다.

김태언님의 프로필 이미지
김태언

작성한 질문수

질문하기