본문 바로가기

IT/Spring80

Spring Boot 3.2 변경점 Logged Application Name 기본 로그 출력에 이제 spring.application.name 속성을 설정한 경우 애플리케이션 이름이 포함됩니다. 이전 형식을 선호하는 경우 logging.include-application-name을 false로 설정할 수 있습니다. Auto-configured User Details Service 자동 구성된 InMemoryUserDetailsManager는 이제 classpath에 spring-security-oauth2-client, spring-security-oauth2-resource-server, 또는 spring-security-saml2-service-provider 중 하나 이상이 있을 때 물러납니다. 마찬가지로, 리액티브 애플리케이션에서.. 2023. 11. 24.
스프링의 트랜잭션 프로그래밍 방식 트랜잭션 소스코드에 직접 트랜잭션을 넣어 관리하는 방법 트랜잭션이 필요한 모든 메서드에 선언을 해주기 때문에 유연하나 유지보수가 힘들다. 선언적 트랜잭션 AbstractPlatformTransactionManager 를 상속하여 일관되게 형식으로 적용이 가능하도록 되어있어 주로 사용한다. 스프링의 @Transactional은 CGlibAopProxy를 사용하여 구현하였는데 흐름을 분석해보자. class CglibAopProxy implements AopProxy, Serializable { private static class DynamicAdvisedInterceptor implements MethodInterceptor, Serializable { @Override @Nullable .. 2023. 10. 12.
Spring AOP 분석 Spring AOP 는 타겟이 클래스냐 인터페이스냐에 따라 두가지 방법으로 aop를 처리한다. 인터페이스 인 경우 JdkDynamicAopProxy를 사용하며 클래스인 경우 ObjenesisCglibAopProxy 를 사용하여 처리한다. public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFactory implements AutowireCapableBeanFactory { /** * Central method of this class: creates a bean instance, * populates the bean instance, applies post-processors, etc. * @see #doCreateBe.. 2023. 10. 10.
RestControllerAdvice 사용하여 로깅 @RestControllerAdvice 혹은 @ControllerAdvice 를 사용하여 로깅하는 방법도 존재한다. Request import io.github.oshai.kotlinlogging.KotlinLogging import org.springframework.core.MethodParameter import org.springframework.http.HttpInputMessage import org.springframework.http.converter.HttpMessageConverter import org.springframework.web.bind.annotation.RestControllerAdvice import org.springframework.web.servlet.mvc.met.. 2023. 9. 25.