AOP Aspect Oriented Programming의 약자입니다. aspect는 부가기능을 의미합니다. 즉 여러객체에 공통으로 적용할 수 있는 기능을 분리해서 재사용성을 높여주는 프로그래밍 기법입니다. 스프링은 이를 proxy객체를 사용함으로써 aop를 실현합니다. AOP 주요 용어들 Target 부가기능을 부여할 대상 객체를 의미합니다. 스프링에서는 주로 Service 객체들이 이에 해당합니다. Advice 실질적인 부가기능을 담은 구현체를 의미합니다. Aspect가 언제 무엇을 할지를 결정합니다. '언제'에 따라 advice는 5가지 종류로 나눌 수 있습니다. JoinPoint 프로그램의 실행중 Advice가 삽입될 수 있는 모든 위치들을 의미합니다. 메서드 호출, 예외 호출 등이 이에 해당하며..
AOP를 위한 모듈 추가 aop 프로그래밍을 위해서 추가해야하는 모듈은 spring-aop와 aspectjweaver 모듈입니다. 각각은 AOP의 실행과 설정에 필요한 모듈입니다. spring-context를 추가할 때, spring-aop 모듈 또한 적용이 되므로 aspectjweaver을 dependency에 추가하도록 합시다. 이를 통해 설정에 필요한 어노테이션을 사용할 수 있게 됩니다. org.aspectj aspectjweaver 1.8.13 문제점1) 기존 코드의 수정 다음 두 함수의 실행시간을 비교를 해야한다고 가정하겠습니다. 하나는 계승을 반복문을 통해 구하는 함수이고 다른 하나는 재귀를 통해 구하는 것입니다. package chap07; public class ImpeCalculator ..
빈의 라이프 사이클 스프링 컨테이너는 객체를 생성하고 주입한 다음 초기화하고 소멸하는 것을 관리합니다. 스프링 컨테이너를 초기화 하는 과정에서는 객체를 생성하고 의존 관계를 설정합니다. 이 과정에서 자동 주입을 설정했던 것 또한 완료가 됩니다. 이후 구현한 초기화 메서드가 있다면 빈 객체의 초기화를 진행합니다. 컨테이너를 소멸하게 되면 빈 객체에 소멸 메서드가 구현이 되었다면 소멸 메서드를 실행한 후 컨테이너가 소멸됩니다. 초기화&소멸 인터페이스 이 두 과정이 필요하다면 아래의 인터페이스를 구현하면 됩니다. public interface InitializaingBean{ void afterPropertiesSet() throws Exception; } public interface DisposableBe..
컴포넌트 스캔 자동 주입과 함께 사용하는 추가 기능은 컴포넌트 스캔입니다. 컴포넌트 스캔을 사용하면 설정 클래스에서 @Bean을 사용하지 않더라도 원하는 클래스를 빈 객체로 만들수 있습니다. 설정 클래스에 다음과 같이 있다고 해봅시다. package config; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import spring..
@Autowired at field 이전 글에서 Autowired를 사용해 빈을 DI할 수 있다고 설명했습니다. 또한 사용하면 설정 클래스에서 생성자나 세터 메서드를 통해 DI를 하는 코드를 없앨 수 있습니다. @Autowired는 필드나 세터 메서드에 위치할 수 있는데 아래 코드는 필드에 적용한 예시입니다. public class MemberRegisterService { @Autowired private MemberDao memberDao; ... 위와 같이 했다면 설정 클래스에서 DI를 하는 코드를 제거할 수 있습니다. @Bean public MemberRegisterService memberRegSvc() { return new MemberRegisterService(); //return new ..
Container 이전 글에서 설명한 Assembler의 기능을 Spring이 제공을 해줍니다. 이를 위해 설정 클래스를 만들고 @Bean 어노테이션을 통해 객체를 생성합니다. package config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import spring.ChangePasswordService; import spring.MemberDao; import spring.MemberRegisterService; @Configuration public class AppCtx { @Bean public MemberDao memberDao()..
Dependency 한 클래스 내부에서 다른 클래스의 함수를 호출할 때 의존관계가 있다고 할 수 있습니다. 구체적으로 호출한 함수 명을 바꿀 때 다른 클래스 소스코드에서도 변경을 요구하는 관계를 의존이라 합니다. 방식1) 하나의 객체에 다른 객체를 넣는 것을 조립이라 칭하겠습니다. 조립을 할 때는 크게 두가지로 나뉩니다. 첫 번째 방식은 클래스 내부에서 직접 조립할 객체를 생성하는 방식입니다. package spring; import java.time.LocalDateTime; public class MemberRegisterService { //방식1) private MemberDao memberDao=new MemberDao(); ... 방식2) 위처럼 서비스 함수 내에 직접 Dao객체를 생성하는 것..
Maven 스프링이 사용하는 모듈과 플러그인에 대한 관리를 쉽게 해줍니다. 프로젝트의 루트폴더의 pom.xml을 통해 설정파일을 저장할 수 있습니다. 메이븐은 한개의 모듈을 아티팩트라는 단위를 통해 관리하게 되는데, 의존 모듈을 설정하는 것은 소스코드를 컴파일할 때 사용하는 클래스패스에 아티팩트를 추가하는 의미입니다. 아래 5.0.2RELEASE버전의 spring-context모듈을 클래스패스에 추가하기 위한 코드입니다. org.springframework spring-context 5.0.2.RELEASE Repository 아티팩트 파일은 로컬 리포지토리와 원격 리포지토리에서 가져와 사용하게 됩니다. 1차적으로 로컬 리포지토리에서 해당 아티팩트 파일이 있는지 확인한 후 있다면 사용합니다. 만일 없다면..
- Total
- Today
- Yesterday
- DP
- spring
- 2-SAT
- implementation
- kmp
- 좌표압축
- Fenwick
- Segment tree
- bfs
- hld
- Suffix Array
- string
- 이분탐색
- 펜윅트리
- dfs
- knapsack
- 이분매칭
- union find
- greedy
- spring boot
- 정렬
- 세그먼트트리
- dijkstra
- sorting
- 동적계획법
- sweeping
- Oracle
- 스위핑
- SCC
- 트라이
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |