프록시 생성방식 스프링은 프록시를 생성할 때, 실제 생성할 빈 객체가 인터페이스를 상속하면 프록시 타입 또한 해당 인터페이스를 상속해서 만들어지게 됩니다. 즉 다음과 같은 코드는 오류가 발생합니다. //in Configuration code.. @Bean public Calculator calculator() { return new REcCalculator(); } package main; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import chap07.Calculator; import chap07.REcCalculator; import config.AppCtx; public class MainAs..
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객체를 생성하는 것..
- Total
- Today
- Yesterday
- union find
- sweeping
- dfs
- 2-SAT
- string
- spring
- implementation
- kmp
- Suffix Array
- 이분매칭
- dijkstra
- 좌표압축
- greedy
- 트라이
- 동적계획법
- spring boot
- 세그먼트트리
- bfs
- SCC
- knapsack
- Fenwick
- 펜윅트리
- hld
- Segment tree
- DP
- 이분탐색
- sorting
- 스위핑
- Oracle
- 정렬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |