전체 글145 [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. [Spring] 스프링 AOP 정리 ≣ 목차 스프링 AOP (Aspect Oriented Programming)관점 지향 프로그래밍(aspect-oriented programming, AOP)은 횡단 관심사(cross-cutting concern)의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임입니다. 쉽게 말해 애플케이션의 로직을 핵심적인 관점(핵심 기능)과 부가적인 관점(부가 기능)으로 나누어 각 관점에 따라 캡슐화하고 모듈화하는 것입니다.핵심 기능은 애플리케이션 로직에서 핵심 비니지스 로직을 의미하며, 부가 기능은 핵심 기능을 보조하기 위해 제공되는 기능입니다. 예를 들어서 로깅, 트랜잭 등등 다양한 기능들이 부가 기능에 해당됩니다. 로깅 기능은 핵심 기능이 호출 되었는지 로그를 남기기 위해 사용됩니다. 즉 .. 2024. 9. 26. [Spring] @Aspect 정리 ≣ 목차@Aspect란?스프링 프레임워크의 AOP(Aspect-Oriented Programming)를 활용하면 여러 클래스에 걸쳐 공통 기능을 효과적으로 적용할 수 있습니다. 이때 핵심 개념인 어드바이저(Advisor)는 포인트컷(Pointcut)과 어드바이스(Advice)로 구성됩니다.포인트컷(Pointcut): 어드바이스를 적용할 메서드를 지정하는 조건입니다. 예를 들어, 특정 패키지의 모든 메서드나 특정 이름을 가진 메서드에 적용할 수 있습니다.어드바이스(Advice): 포인트컷에서 정의한 조건에 맞는 메서드가 실행될 때 수행할 작업입니다. 스프링에서는 @Aspect 애노테이션을 사용해 손쉽게 어드바이저를 생성할 수 있습니다. 이 애노테이션을 클래스에 적용하면 해당 클래스가 AOP의 어드바이저 역.. 2024. 9. 26. [Spring] 빈 후처리기 ≣ 목차스프링에서 빈 등록 방법에는 대표적으로 @Bean, @Component/Scan를 이용한 방법이 있습니다. 해당 방법들은 빈 등록 절차는 다르지만, 스프링 컨테이너에서 빈을 관리하고 사용하는 방식은 동일합니다. 빈 후처리기 - BeanPostProcessor 스프링 빈을 등록 목적으로 생성했지만, 스프링 컨테이너에 저장하기 전에 해당 객체에 대해 어떤 작업을 하고 싶을 때 사용하는 기능입니다. 이런 빈 후처리기는 객체를 조작할 수 있지만, 완전히 다른 객체로 변경하는 작업도 가능합니다.package org.springframework.beans.factory.config;import org.springframework.beans.BeansException;import org.springframew.. 2024. 9. 24. 이전 1 ··· 6 7 8 9 10 11 12 ··· 15 다음