Spring40 [Spring Boot] spring.jpa.open-in-view is enabled by default 경고 메시지 JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning 해당 경고 메시지는 나오는 이유해당 경고 메시지는 spring.jpa.open-in-view 설정이 활성화되어 있을 때 발생하는 경고 메시지입니다. 이 설정은 기본적으로 true로 설정되어 있어서, 뷰 렌더링 중에도 데이터베이스 세션이 열려 있을 수 있다는 점을 알려주는 메시지입니다. 그럼 어떤 문제가 있.. 2024. 10. 15. [Spring Boot] 다양한 외부 설정 방법 #4 - @Profile @Profile@Profile을 활용하면 각 환경에 맞는 스프링 빈을 등록할 수 있어 로컬 개발 환경에서는 가짜 결제 기능을 제공하는 빈을, 운영 환경에서는 실제 결제 기능을 제공하는 빈을 등록할 수 있습니다. 이를 위해 각 환경에 맞는 프로필을 설정하고, 해당 프로필에 따라 필요한 빈을 정의할 수 있습니다. 예를 들어 로컬 환경에서는 @Profile("local")을 사용하여 가짜 결제 서비스를 구현하고, 운영 환경에서는 @Profile("prod")을 사용하여 실제 결제 서비스를 구현하는 방식으로 설정할 수 있습니다. 해당 예시를 간단하게 코드로 구현해보겠습니다. Pay 관련 인터페이스public interface PayClient { void pay(int money);}DI를 적극 활용하기.. 2024. 10. 15. [Spring Boot] 다양한 외부 설정 방법 #2 - Environment 해당 글을 읽기전에 아래 글을 읽고 오시는 걸 추천합니다.https://pjstudyblog.tistory.com/70 [Spring Boot] 다양한 외부 설정 방법 #1≣ 목차 외부설정이란?외부 설정은 애플리케이션이 실행되거나 빌드될 때 외부에서 설정 값을 주입 받는 있는 기능을 의미합니다. 그렇다면 애플리케이션 실행에 필요한 설정값을 외부에서 어pjstudyblog.tistory.com 외부 설정 일관성 문제 해결스프링은 외부 설정의 일관성 문제를 Environment와 PropertySource를 통해 해결했습니다. 이를 통해 다양한 설정 소스를 통합하고, 일관된 방식으로 프로퍼티를 관리할 수 있게 도와줍니다. 외부 설정 일관성 문제에 대해서는 위에 게시글에 있습니다. Environment특정.. 2024. 10. 13. [Spring Boot] 다양한 외부 설정 방법 #1 ≣ 목차 외부설정이란?외부 설정은 애플리케이션이 실행되거나 빌드될 때 외부에서 설정 값을 주입 받는 있는 기능을 의미합니다. 그렇다면 애플리케이션 실행에 필요한 설정값을 외부에서 어떻게 주입할 수 있는 것일까? 외부 설정은 크게 아래와 같이 4개로 나눌 수 있습니다.OS 환경 변수: OS에서 지원하는 외부 설정 , OS에서 사용되는 모든 프로세스에 적용 가능자바 시스템 속성: 자바에서 지원하는 외부 설정, 해당 JVM안에서 사용자바 커맨드 라인 인수: 커맨드 라인에서 실행시 main(args) 메서드에서 사용할 인자외부 파일(설정 데이터): 프로그램 외부의 파일을 읽어 사용 (application.properties) 1. OS 환경 변수환경 변수(environment variables)는 애플리케이.. 2024. 10. 13. [Sprign Boot] Auto Configuration 정리 - @Conditaional ≣ 목차 Auto ConfigurationAuto Configuration은 주로 자동 설정, 자동 구성 두 용어로 번역되어 사용됩니다. 자동 설정Configuration이라는 단어가 컴퓨터 용어에서는 환경 설정, 설정이라는 뜻으로 자주 사용됩니다. Auto Configuration은 빈들을 자동으로 등록해서 스프링이 동작하는 환경을 자동으로 설정해주기 때문에 자동 설정이라는 용어도 맞습니다. 자동 구성Configuration이라는 단어는 구성, 배치라는 뜻도 있습니다.예를 들어서 컴퓨터라고 하면 CPU, 메모리등을 배치해야 컴퓨터가 동작합니다. 이렇게 배치하는 것을 구성이라 합니다. 스프링도 스프링 실행에 필요한 빈들을 적절하게 배치해야 합니다. 자동 구성은 스프링 실행에 필요한 빈들을 자동으로 배치.. 2024. 10. 10. [Spring Boot + Java] JAR와 WAR 간단 정리 ≣ 목차JAR란?JAR(Java ARchive) 파일은 자바 애플리케이션을 패키징하기 위한 포맷으로, 클래스 파일, 메타데이터, 리소스 파일 등을 하나의 파일로 묶어 사용합니다. JAR 파일은 모든 의존성을 내장하고 있어 독립 실행이 가능하며, 이를 통해 어디서나 동일한 환경에서 애플리케이션을 실행할 수 있습니다. JAR 파일을 실행하기 위해서는 JRE(Java Runtime Environment)만 있으면 충분합니다. 즉, JRE가 설치된 환경이라면, 추가적인 설정 없이도 JAR 파일을 손쉽게 실행할 수 있습니다.스프링 부트의 경우, 톰캣이 내장되어 있습니다. 이는 애플리케이션 코드 안에 톰캣과 같은 웹 애플리케이션 서버가 라이브러리 형태로 포함되어 있다는 의미입니다. 이렇게 함으로써, 개발자는 별도의.. 2024. 10. 6. [Spring] Spring AOP의 한계 ≣ 목차 스프링은 JDK 동적 프록시와 CGLIB를 사용하여 프록시 객체를 생성합니다. 이 두 기술은 각각의 한계점을 가지고 있습니다. 이에 대해 살펴보겠습니다. 또한, 프록시 객체의 내부 호출 시 발생할 수 있는 문제점에 대해서는 이번 포스팅에서는 다루지 않겠습니다. JDK 동적 프록시 문제 - 타입 캐스팅인터페이스 기반으로 프록시를 생성하는 JDK 동적 프록시는 구체 클래스로 타입 캐스팅이 불가능한 한계가 있습니다.@Slf4jpublic class ProxyCastingTest { @Test void jdkProxy() { MemberServiceImpl target = new MemberServiceImpl(); ProxyFactory proxyFactory = .. 2024. 10. 4. [Spring] Spring AOP 사용 시 내부 호출 문제 해결 방법 Spring AOP 사용 시 내부 호출 문제Spring AOP를 사용할 때 내부 호출 문제는 AOP가 적용된 프록시를 통해 대상 객체(Target)를 호출해야 발생하는데, 프록시를 거치지 않고 직접 호출하면 AOP가 적용되지 않아 어드바이스가 호출되지 않는 문제가 생깁니다. 이 문제는 @Transactional과 같은 AOP 기반 기능에서도 동일하게 발생합니다. 해결 방법으로는 대상 객체를 직접 호출해서 발생한 문제이기 때문에 외부 호출을 하면 문제가 해결됩니다. 해결 방법 - 지연 조회내부 호출을 사용한 예시@Slf4j@Componentpublic class CallServiceV0 { public void external() { log.info("call external"); .. 2024. 10. 3. [Spring] 스프링 포인트컷 지시자 정리 ≣ 목차포인트컷 표현식포인트컷(Pointcut)은 핵심 기능에 부가 기능을 추가할지 여부를 결정하는 필터링 역할을 합니다. 포인트컷 표현식은 이러한 부가 기능을 적용할 때 사용되는 기준을 정의합니다. 이 표현식은 패키지 이름, JDK 정규 표현식, AspectJ 표현식 등 여러 방법으로 설정할 수 있으며, 그중에서도 AspectJ 표현식이 가장 널리 사용됩니다. 포인트컷 지시자 종류 포인트컷 지시자는 포인트컷 표현식을 정의할 때 어떤 방법을 이용해서 작성할 지 도와주는 표현입니다.포인트컷 표현식은 And, or, not(&&, ||, !)와 같은 논리 연산자를 함께 사용할 수 있으며 * 같은 표현도 사용할 수 있습니다. execution : 메소드 실행 조인 포인트를 매칭 (가장 많이 사용) with.. 2024. 10. 1. [Spring] Spring AOP 사용 방법 - @Aspect 활용 ≣ 목차모든 예제에서 스프링 컨테이너에 빈을 저정하는 코드는 따로 없습니다.ㅎㅎㅎ!! 기본 예제@Aspect@Slf4jpublic class AspectV1 { @Around("execution(* hello.aop.order..*(..))") public Object doLog(ProceedingJoinPoint joinPoint) throws Throwable { log.info("AspectV1.doLog={}", joinPoint.getSignature()); return joinPoint.proceed(); }}포인트컷은 메소드나 클래스에 적용할 부가기능을 결정하는 애노테이션입니다. 이때 메소드 명, JDK 정규 표현식, aspectJ 표현식 등으로 조.. 2024. 9. 27. 이전 1 2 3 4 다음