Spring/DI & AOP 16

학습 // Spring // DI // 빈 생명주기 ( Bean Lifecycle )

업데이트 :: 2018.08.07 빈의 생명주기빈 초기화단계빈 설정정보 읽기 및 보완빈 생성 전후처리빈 생성 초기화처리빈 사용단계빈 종료단계빈 파괴 전처리DI 컨테이너 종료빈의 생명주기빈 초기화 단계 (initialization)빈 사용 단계 (activation)빈 종료 단계 (destruction)빈 초기화단계빈을 설정하는 과정빈을 인스턴스화 하는 과정빈을 생성한 다음 후처리 하는 과정빈 설정정보 읽기 및 보완public interface BeanFactoryPostProcessor { void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory); } BeanFactoryPostProcessor를 직접 구현해서 빈으로 정의하면 자신..

Spring/DI & AOP 2018.08.07

학습 // Spring // DI // 빈 스코프(Bean Scope)

업데이트 :: 2018.08.07 빈 스코프스코프 종류스코프 설정서로 다른 스코프의 빈 주입시 문제점룩업메소드 인젝션스코프트 프락시커스텀 스코프빈 스코프DI 컨테이너는 빈 간의 의존 관계를 관리할 뿐아니라 빈의 생존 기간도 관리빈의 생성방식을 빈 스코프라고 하며, 개발자는 빈 스코프를 직접 다루지 않아도 됨스코프 종류singletonDI 컨테이너를 기동할 때 빈 인스턴스가 하나 만들어지고, 이후에는 그 인스턴스를 공유하는 방식기본 스코프이므로 별도 스코프처리를 하지 않았다면 singleton으로 간주prototypeDI 컨테이너에 빈을 요청할 때마다 새로운 빈 인스턴스가 만들어짐멀티 스레드 환경에서 오동작이 발생하지 않아야 하는 (thread-safety) 빈이라면 prototype을 활용requestH..

Spring/DI & AOP 2018.08.07

학습 // Spring // DI // ComponentScan & Filter

업데이트 :: 2018.08.07 컴포넌트 스캔기본설정 컴포넌트 스캔필터적용 컴포넌트스캔할당가능한 타입활용 필터정규표현식 패턴으로 필터기본대상이나 특정대상을 빼고 필터컴포넌트 스캔클래스로더를 스캔하면서 특정 클래스를 찾아 DI 컨테이너에 등록하는 방법기본설정 컴포넌트 스캔@Component아래 세 경우에 해당하지 않는 컴포넌트 ( 유틸리티, 기타 지원 클래스 )에 붙는 애너테이션@ControllerMVC패턴에서 C, 컨트롤러 역할을 하는 컴포넌트에 붙이는 애너테이션클라이언트에서 오는 요청을 받고, 비즈니스 로직의 처리 결과를 응답으로 돌려보내는 기능실제 비즈니스 로직은 @Service 컴포넌트가 처리하도록 위임@Service비즈니스 로직(service)을 담당하는 컴포넌트에 붙이는 애너테이션컨트롤러에서 ..

Spring/DI & AOP 2018.08.07

학습 // Spring // DI // 오토와이어링 ( Autowiring )

업데이트 :: 2018.08.07 오토와이어링타입으로 오토와이어링이름으로 오토와이어링컬렉션이나 맵으로 오토와이어링오토와이어링자바기반 설저방식이나 XML기반 설정방식에서 명시적으로 Bean을 선언하는 것과 달리 DI 컨테이너에 빈을 자동으로 주입하는 방식타입으로 오토와이어링@Autowired 애너테이션은 타입으로 오토와이어링 하는 방식의존성주입이 반드시 성공한다는 가정DI 컨테이너 안에서 찾지 못하면 'NoSuchBeanDefinitionException' 에외발생'required' 속성을 false 처리하면 필수조건이 완화 ( java.util.Optional 속성도 가능 )required 사용@Component public class UserServiceImpl implements UserService..

Spring/DI & AOP 2018.08.07

학습 // Spring // DI // 의존성주입( Injection )

업데이트 :: 2018.08.07 의존성주입을 사용하는 이유?의존성주입 종류설정자 기반 ( Setter Injection )생성자 기반 ( Constructor Injection )필드 기반 ( Field Injection )의존성주입을 사용하는 이유?객체를 실제 코드흐름에 생성하는 것이 아닌 외부에 생성된 객체를 가져와 사용하는 방식클래스간의 결합도를 낮춰 재사용성을 높임의존성주입 종류설정자 기반 의존성 주입 방식생성자 기반 의존성 주입 방식필드 기반 의존성 주입 방식설정자 기반 ( Setter Injection )public class UserServiceImpl implements UserService { private UserRepository userRepository; private Passw..

Spring/DI & AOP 2018.08.07

학습 // Spring // DI // ApplicationContext & Bean

업데이트 :: 2018.08.07 ApplicationContext & BeanApplicationContext 가져오기Bean 가져오기AppConfigJava기반XML 기반Annotation 기반컴포넌트 스캔명시적 이름주기ApplicationContext & BeanApplicationContext & Bean을 설정하는 방법들자바기반 설정방식XML기반 설정방식Anotation기반 설정방식ApplicationContext 가져오기ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext context = new AnnotationConfigApplicationContext("..

Spring/DI & AOP 2018.08.07