JAVA/Spring(111)
-
[SpringBoot] 프로파일(Profile)
1. 프로파일(Profile) 프로파일은 실행 환경별(운영, 개발, 로컬 등)로 등록할 빈이 다르거나 프로퍼티 등을 다르게 해주어야 할 때 사용합니다. @Profile 애노테이션 사용 위치 @Configuration @Component 특정 프로파일 활성화 방법 spring.profiles.active 추가적인 프로파일 방법 spring.config.import 프로파일용 프로퍼티 형식 application-{profile}.yml 2. @Profile 애노테이션 실습 1. 설정 클래스 파일에 @Profile 애노테이션 적용 @Profile("prod") @Configuration public class BaseConfiguration { @Bean public String hello(){ return ..
2022.11.01 -
[Spring][IoC] @Component와 컴포넌트 스캔(Component Scan)
1. 컴포넌트 스캔(Component Scan)의 주요기능 컴포넌트 스캔은 스프링 프레임워크가 스프링 빈(Bean)으로 등록할 준비가 되어있는 클래스들을 스캔한 다음 빈으로 등록하는 기능입니다. 컴포넌트의 주요 기능은 2가지입니다. 스캔 범위 : 컴포넌트를 어디부터 어디까지 스캔할지 탐색 범위를 설정 필터링 : 컴포넌트 스캔중 특정한 클래스는 빈으로 생성하지 않음 2. 컴포넌트 스캔 대상 다음 애노테이션들은 @Component 애노테이션을 갖고 있기 때문에 컴포넌트 스캔의 대상이 되어 빈으로 등록됩니다. @Component @Repository @Service @Controller, @RestController @Configuration 3. @ComponentScan의 동작 원리 @ComponentSc..
2022.11.01 -
[Spring] Null-safety : Null 관련 애노테이션
1. Null-safety 스프링 프레임워크 5에 추가된 Null 관련 애노테이션 Null 관련 애노테이션 @NonNull @Nullable @NonNullApi(패키지 레벨 설정) @NonNullFields(패키지 레벨 설정) 목적 툴의 지원을 받아 컴파일 시점에 최대한 NullPointerException을 방지하기 위함 2. Null-safety @NonNull 실습 1. @NonNull 애노테이션을 적용할 구현 코드 정의 @Service public class EventService { @NonNull public String createEvent(@NonNull String name){ return "hello " + name; } @NonNull public String publishEvent..
2022.10.31 -
[Spring] 스프링 AOP : @AOP
1. Aspect 정의 @Aspect 빈으로 등록하기 위해서 @Component 추가 2. Pointcut 정의 @Pointcut(표현식) 주요 표현식 execution @annotation bean Pointcut 조합 &&, ||, ! 3. Advice 정의 @Before @AfterReturning @AfterThrowing @Around 4. AOP 구현 실습 1. 의존성 추가 dependencies { implementation 'org.springframework.boot:spring-boot-starter-aop' } 2. Aspect 클래스 정의 및 빈 등록 @Aspect @Component public class PerfAspect { } 3. Pointcut 및 Advice 모듈 정의 ..
2022.10.31 -
[Spring] 프록시 기반 AOP
1. 스프링 AOP 특징 프록시 기반 AOP 구현체 스프링 빈에만 AOP를 적용할 수 있음 모든 AOP 기능을 제공하는 것이 목적이 아니라, 스프링 IoC와 연동하여 엔터프라이즈 애플리케이션에서 가장 흔한 문제에 대한 해결책을 제공하는 것이 목적 2. 프록시 패턴 프록시 패턴은 기존 코드 변경 없이 접근을 제어(멤버에 접근, 메서드에 접근)하거나 부가적인 기능(속도 측정, 트랜잭션, 입력값 범위 검사, 유효성 검사 등)을 추가하는데 사용됨 예를 들어 기존 코드를 건드리지 않고 메서드의 성능 측정을 하는데 사용할 수 있음 3. 수동적인 프록시 패턴의 문제점 매번 프록시 클래스를 작성하는 문제 여러 클래스 여러 메서드에 적용할 때 문제 객체들의 관계가 복잡할때 어려움 4. 수동적인 프록시 패턴의 해결안 : ..
2022.10.30 -
[Spring] Spring AOP(Aspect-Oriented Programming) 개념
1. 스프링 AOP(Aspect-oriented Programming) AOP(Aspect-oriented Programming)은 OOP를 보완하는 수단 흩어진 Aspect를 모듈화 할 수 있는 프로그래밍 기법 흩어진 관심사(Crosscutting Concerns) 위 그림에서 각각의 색깔들의 의미는 여러 클래스, 여러 메소드에 나타나는 비슷한 코드, 비슷한 필드 주입, 비슷한 메서드 호출일 수 잇습니다. 대표적인 사례가 데이터베이스에 접근하기 위한 코드들은 트랜잭션 코드들로 감싸야 합니다. 이러한 경우에 AOP를 적용할 수 있습니다. 각각의 색깔이 메서드라고 가정한다면 파란 색메서드는 Class A, Class B에 사용됨, 노랑은 Class A, B, C에 사용됨, 빨강은 Class A, C에 사용..
2022.10.30