22.11.26 19:02 작성
·
362
1
ㅎㅎ 또 질문이 있습니다~
강의와는 달리 @AfterEach 에서 매번 삭제하지 않고
트랜젝션을 사용하려고 합니다.
@Transactional 을 사용하려는데
@SpringBootTest
@Transactional
open class UserServiceTest @Autowired constructor(
// constructor 에 @Autowired 를 붙이면 파라미터에 일일이 @Autowired 붙이는 걸 생략 가능!
private val userRepository: UserRepository,
private val userService: UserService,
) {
요렇게 class 앞에 open 을 붙여야 한다고 인텔리제이가 경고해 주는데요... 혹시 이게 무엇인지 궁금합니다!
답변 3
1
0
2022. 11. 27. 13:08
안녕하세요!! 승원님!! 아이고~~ 너무 좋은 질문이십니다 ㅎㅎㅎㅎ
@Transactional
어노테이션을 사용하면, 스프링 AOP에 의해 프록시 객체를 만들게 되는데요 이때 프록시 객체를 정상적으로 활용하기 위해서는 클래스가 상속 가능해야 합니다!!
하지만 코틀린에서는 기본적으로 모든 클래스가 상속이 불가능하기 때문에 open
이라는 키워드를 사용해 명시적으로 클래스를 상속 가능하게 열어주어야 하는 것이죠!
더 궁금하신 내용 있으시면 편하게 질문 부탁드립니다!! 🙏🙏
감사합니다!!!
2023. 03. 02. 22:57
안녕하세요, 차가운물님!! 좋은 질문 올려주셔서 감사드립니다 😊
이 부분은 제가 <테스트 코드와 트랜잭션>이라는 주제의 영상으로 제작해 말씀드리고 싶어 조금만 시간을 양해해주시면 감사드리겠습니다 ㅎㅎㅎ
늦어도 이번 주말까지는 강의 내용에 추가하여 메일로 공유드릴 수 있도록 하겠습니다. 감사합니다! 🙏