Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 제대로알기
- 스프링5레시피
- 람다
- 나만재밌는이야기
- 스프링구성
- 객체지향생활체조원칙
- Java8
- JPA
- a-d
- gulp
- ES6
- 일급함수
- 달리기를말할때내가하고싶은이야기
- 영속성컨텍스트
- 일빵빵알파벳파닉스
- 모던자바인액션
- spring5receipe
- 영속성
- 잡담
- 발음공부
- 다시보기연습
- 프레디케이트
- 1월의독서
- 생각
- es5
- 메서드참조
- spring configuration
- 엔티티매핑
- 동작파라미터화
- 클린코드
Archives
- Today
- Total
notepad
[레시피2] 스프링코어 - POJO와 IOC컨테이너를 다루는 기술 본문
(작성중)
스프링 5 레시피 책을 읽고 공부한 내용을 간단하게 정리.
1. Configuration
> 레시피 2-1 ~ 2-12
IOC 컨테이너? (ApplicationContext, BeanFactory)
- 객체의 생성, 생명주기 관리 등 객체에 대한 제어권을 컨테이너가 관리, 기능을 제공
- 객체의 생성을 책임지고 의존성을 관리
- POJO의 생성, 초기화, 서비스, 소멸에 대한 권한을 가진다(생명주기)
- IOC 컨테이너에 스프링 빈의 등록
- POJO 객체를 빈으로 등록 시 컴포넌트 스캔의 대상이 되며 IOC에서 생성, 관리된다.
- @Configuration, @Bean
- 두 애노테이션을 함께 사용
- 초기 세팅 및 외부의 라이브러리를 빈으로 등록할 때 주로 사용한다
- 대상 빈을 return해준다.
- @Component (범용 애너테이션) , @Controller, @Repository, @Service
- ApplicationContext / context.getBean() 으로 IOC 컨테이너에서 인스턴스/빈을 가져온다.
- @ComponentScan 안에서 스캔 대상을 필터링 할 수 있다.
- includeFilters, excludeFilters
- FilterType.REGEX, ANNOTATION, ASSIGNABLE, ASPECTJ
- @Autowired, @Resource, @Inject를 붙여 POJO 레퍼런스 자동 연결
- @Autowired - 필드, 세터, 생성자에 주로 사용한다. 붙이면 bean간 참조 가능한 상태로 자동 연결된다.
- 생성자 주입을 쓰면 @Autowired 생략 가능 (권장)
- IOC 컨테이너에 빈 호환 타입이 여럿 존재하거나 프로퍼티가 그룹형이 아닌경우 빈 우선 순위 지정 가능
- @Primary 를 붙이면 우선권 부여되어 해당 빈이 연결
- @Qualifier("beanName") 를 붙이면 명시된 이름으로 프로퍼티 연결
- @Resource (이름으로 레퍼런스 연결)
- @Autowired + @Qualifier와 같은 역할. 대상이 명확하다.
- 자바 표준 애너테이션으로 스프링프레임워크가 아닌 곳에서 사용 가능
- @Inject (타입으로 레퍼런스 연결)
- 타입이 같은 POJO가 여러개인 경우 커스텀 애너테이션을 만들어서 함께 사용해야한다.
- @Autowired - 필드, 세터, 생성자에 주로 사용한다. 붙이면 bean간 참조 가능한 상태로 자동 연결된다.
- 빈 스코프 @Scope
- getBean() 메서드로 빈을 요청하거나 다른 빈에서 참조할 때 스프링은 빈 스코프에 따라 어느 빈 인스턴스를 반환할지 결정
- 스프링은 IOC컨테이너에 선언한 빈마다 인스턴스 하나를 생성하고 전체 컨테이너 스코프에 공유
- 기본 스코프는 싱글톤이다. IOC 컨테이너당 빈 인스턴스 하나 생성
- 스프링의 빈 스코프 - singleton, prototype (요청할 때마다 빈 인스턴스 생성) , request(HTTP 요청당 빈 인스턴스 하나), session(HTTP 세션당 빈 인스턴스 하나), globalSession(전역 HTTP 세션당 빈 인스턴스 하나)
- 외부 리소스를 어떻게 읽고 사용하는지
- @PropertySource, @Value
- Spring Bean 의 생명주기 관리
- initMethod, destroyMethod 속성, @PostConstruct @PreDestroy 초기화 지연, @DependsOn 초기화 의존 관계 정의
- 스프링 빈 검증 및 후처리기 활용
- 스프링 환경 및 프로파일 세트
- @Required @Profile 사용법
2. AOP
> 레시피 2-13 ~ 2-22
- spring aop
- AspectJ
3. TaskExecutor & Event
> 레시피 2-23 ~ 2-24
- 2-23. TaskExecutor - 동시성 적용하기 - chapter5 에서 더 자세히 다룬다.
- 스레드 기반의 동시성을 제공하는 추상체
- 2-24. 스프링에서 이벤트를 생성, 발행, 리스닝 하는 방법 - 이벤트 기반 통신
- 이벤트 생성 - 이벤트 자체 정의
- ApplicationEvent를 상속하여 이벤트 정의 (ApplicationListner 인터페이스의 타입 시그니처)
- 이벤트 발행 - 이벤트를 인스턴스화 한 후 이벤트발행기에서 publishEvnet() 메서드를 호출하면 이벤트가 발행된다.
- ApplicationEventPublisherAware 인터페이스 구현 & applicationEventPublish.publishEvent(event);
- 또는 필드 주입 @Autowired private ApplicationEventPublisher publisher 후 publishEvent(event)를 통해 발행
- 이벤트 리스닝
- ApplicationListener<XxxEvent> 구현 - 타입 매개변수에 매치되는 이벤트를 모두 알림 받음
- 또는 @EventListener 애노테이션 사용(spring 4.2) -> 이벤트 생성 시 ApplicationEvent를 상속할 필요가 없다.
- 이벤트 생성 - 이벤트 자체 정의
'JAVA > JAVA' 카테고리의 다른 글
리플렉션 (0) | 2020.09.04 |
---|---|
JVM 이해하기 (0) | 2020.09.01 |
Generics - 제네릭 사용 이유 (0) | 2020.05.27 |
Comments