스프링

· 스프링
HandlerMethod 등록스프링에서 requestMappingHandlerMapping이 생성되며 선언한 컨트롤러의 메서드들이 요청처리를 위한 메타정보과 함께 HandlerMethod로 등록된다.public HandlerMethod( String beanName, BeanFactory beanFactory, @Nullable MessageSource messageSource, Method method) { super(method); Assert.hasText(beanName, "Bean name is required"); Assert.notNull(beanFactory, "BeanFactory is required"); this.bean..
· 스프링
기존 AbstractPlatformTransactionManager에서의 이벤트 발행AbstractPlatformTransactionManager를 사용하는 경우 commit을 수행하는 과정에서 TransactionSynchronizationUtils의 메서드를 활용하여 @TransactionalEventListener에게 이벤트를 전달합니다.조금 더 구체적으로는 TransactionSynchronizationManager.getSynchronizations()을 통해 해당 트랜잭션에서 등록된 synchronizations을 조회하고 synchronization에 등록된 콜백을 실행하는 방법으로 이벤트를 전달합니다. ReactiveTransactionManager에서의 이벤트 발행하지만 Webflux에서..
· 스프링
private Object resolveInstance(Object candidate, DependencyDescriptor descriptor, Class type, String name) { Object result = candidate; if (result instanceof NullBean) { // Raise exception if null encountered for required injection point if (isRequired(descriptor)) { raiseNoMatchingBeanFound(type, descriptor.getResolvableType(), descriptor); } ..
· 스프링
트랜잭션을 위한 어드바이저트랜잭션을 위한 어드바이저는 ProxyTransactionManagementConfiguration에서 등록되는 BeanFactoryTransactionAttributeSourceAdvisor를 통해 생성됩니다. AspectJ로 선언한 어드바이저우선 AspectJ는 @EnableAspectJAutoProxy를 통해 활성화합니다.이후 @EnableAspectJAutoProxy를 통해 등록된 AspectJAutoProxyRegistrar에서 AopConfigUtils.registerAspectJAnnotationAutoProxyCreatorIfNecessary(registry)를 통해 org.springframework.aop.config.internalAutoProxyCreator..
· 스프링
Spring이 시작되면 AbstractApplicationContext의 refresh 메서드를 통해 컨텍스트 관련 설정이 시작됩니다. ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();// Invoke factory processors registered as beans in the context. invokeBeanFactoryPostProcessors(beanFactory); // Register bean processors that intercept bean creation. registerBeanPostProcessors(beanFactory); // Instantiate all remaining (non-laz..
· 스프링
@Transactional 메서드가 실행되는 과정Spring에서 @Transactional이 선언된 메서드를 실행할 때, 내부적으로 TransactionAspectSupport의 invokeWithinTransaction 메서드가 호출됩니다. // spring-tx 6.1.6 기준// This is an around advice: Invoke the next interceptor in the chain. // This will normally result in a target object being invoked. retVal = invocation.proceedWithInvocation();해당 메서드의 392번 라인에서 invocation.proceedWithInvocation()을 호출하며, 트..
belljun
'스프링' 카테고리의 글 목록