[SPRING] Spring의 트랜잭션 및 스트림
SPRINGSpring의 트랜잭션 및 스트림
왜이 코드가 작동하지 않는지 이해하려고 노력합니다.
구성 요소 :
@PostConstruct
public void runAtStart(){
testStream();
}
@Transactional(readOnly = true)
public void testStream(){
try(Stream<Person> top10ByFirstName = personRepository.findTop10ByFirstName("Tom")){
top10ByFirstName.forEach(System.out::println);
}
}
그리고 저장소 :
public interface PersonRepository extends JpaRepository<Person, Long> {
Stream<Person> findTop10ByFirstName(String firstName);
}
나는 얻다:
해결법
-
==============================
1.Spring에서 중요한 점 중 하나는 많은 주석 기능이 프록시를 사용하여 주석 기능을 제공한다는 점입니다. 즉, @Transactional, @Cacheable 및 @Async는 모두 해당 주석을 감지하고 해당 빈을 프록시 빈으로 래핑하는 Spring에 의존합니다.
Spring에서 중요한 점 중 하나는 많은 주석 기능이 프록시를 사용하여 주석 기능을 제공한다는 점입니다. 즉, @Transactional, @Cacheable 및 @Async는 모두 해당 주석을 감지하고 해당 빈을 프록시 빈으로 래핑하는 Spring에 의존합니다.
그렇기 때문에, 프록시 된 메소드는 클래스 내에서가 아니라 클래스 내에서 호출 될 때만 사용될 수 있습니다. 이 주제에 대해 알아보십시오.
시험:
시연하려면 (1) :
public class MyOtherClass { @Autowired private MyTestStreamClass myTestStreamClass; @PostConstruct public void runAtStart(){ // This will invoke the proxied interceptors for `@Transactional` myTestStreamClass.testStream(); } }
시연하려면 (2) :
@Component public class MyTestStreamClass { @Autowired private MyTestStreamClass myTestStreamClass; @PostConstruct public void runAtStart(){ // This will invoke the proxied interceptors for `@Transactional` since it's self-autowired myTestStreamClass.testStream(); } @Transactional(readOnly = true) public void testStream(){ try(Stream<Person> top10ByFirstName = personRepository.findTop10ByFirstName("Tom")){ top10ByFirstName.forEach(System.out::println); } } }
from https://stackoverflow.com/questions/51922604/transactional-and-stream-in-spring by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] spring-data-neo4j를 사용할 때 neo4j webadmin을 활성화하는 방법은 무엇입니까? (0) | 2019.04.14 |
---|---|
[SPRING] Spring Boot - 다른 데이터베이스에 대해 동일한 저장소와 동일한 엔티티 (0) | 2019.04.14 |
[SPRING] Hibernate, Spring, JDBC로 SSL 인증서 구성 (0) | 2019.04.14 |
[SPRING] "java.net.BindException : 이미 사용중인 주소 : JVM_Bind"이클립스 화성에서 부두를 시작할 때 (0) | 2019.04.14 |
[SPRING] Eclipse Maven Spring : 서버로 실행하려고 할 때의 서버 오류 (Tomcat 7) (0) | 2019.04.14 |