[스터디] 배워서 바로 쓰는 스프링 프레임워크
스터디 시작 : 2020년 7월 23일, 중간 중간 스터디 과정에 대해 내용 업데이트 예정
Springboot을 사용하는 회사로 이직했다. (입사 3개월 차ㅎㅎ)
자바도 까먹은 지 오래이고, 웹 개발도 처음이라 제로 베이스로 시작하는 것과 다름이 없어서 공부가 시급했다.
입사하자마자 작은 프로젝트에 투입되었기 때문에 당장 개발을 위해 실무에 적합한 도서인 "스프링 부트와 AWS로 혼자 구현하는 웹 서비스"를 읽었다. 근무 시간에는 Spring boot 프로젝트를 하고, 퇴근 후에는 책을 봤다. (이 책은 당장 실무에 투입되어야 하는 분께 추천한다.)
실무형 책도 도움이 많이 되었지만 두 달 정도 기본적인 CRUD를 개발하고 나니, 정석대로 이론 공부가 필요하다고 판단되었다. 어떤 기능을 추가하거나 조작하려고 할 때도 spring 친구를 만나서 버벅거릴 때가 많았다. 그래서 회사에 동료 개발자 분과 Spring Framework 스터디를 시작하기로 했다.

어떤 책으로 spring 스터디를 할 지 고민되었다. 토비의 스프링도 워낙 유명해서 괜찮을 것도 같았다. 하지만 동료 개발자분께서 한빛 미디어에서 나온 책을 이미 보유하고 계셨고, 목차를 훑어보니 알고 싶어했던 내용들이 알차게 들어있었기 때문에 해당 책을 선택했다.
결론만 말하자면 이 책은 비추이다. => https://prohannah.tistory.com/94
[스터디 운영 방침]
1. 매주 정해진 분량을 공부 후, 흥미로웠던 내용에 대해 자세히 조사하여 발표
2. 탄력적으로 조정
[스터디 내용 기록]
2020/08/07 - 챕터 4, 5장 후기
빈 생성 직후 빈 후처리기(BeanPostProcessor)로 초기화 직전에 커스텀 작업을 할 수 있다는 걸 알게 됐다. 아래 그림은 IoC와 AOP를 도식화한 건데, 아직도 잘 모르긴하는데 이제는 조금 추측이 가능해졌따.

- 내가 직접 Bean의 Proxy 객체를 만들지 않아도 되는 이유 : 빈 후처리기들 중에서 프록시를 자동으로 생성함
- Spring은 Bean을 생성할 때 마다 후처리기에 전달한다. (DefaultAdvisorProxyCreator가 빈후처리기로 등록되어 있다면)
- 빈 후처리기는 전달받은 빈들이 Proxy 대상인지 확인한다.
- Proxy 적용 대상이면 Spring 프록시 생성기를 통해 Bean에 대한 Proxy 생성하고 어드바이스를 연결한다. ( 아마 여기서 @Transactaional, @Cachable 등의 내장 AOP 기능을 연결하는 듯? 추측)
- 프록시가 생성되면 전달받은 Bean 대신에 프록시 객체를 스프링 컨테이너에게 돌려준다.
- 컨테이너는 빈 후처리기가 돌려준 Proxy 객체를 빈으로 등록한다.
Bean이 생성되고, 그 Bean이 AOP기능을 사용중이라면 그 Bean에 대한 Proxy 객체가 생성된 후, 해당 Proxy 객체에 대해서 @Transactional에 대한 작업, @Cachable에 대한 작업을 하는
5장
application.properties 라는 text파일을 이용해서 springboot의 configuration 설정파일에 어떻게 셋팅하는지?를 엿볼 수 있었던 것 같다.
2020/08/16 - 챕터 6 (어노테이션기반 개발)
어노테이션으로 Bean 생성 및 의존관계 주입
[어노테이션으로 Bean 생성]
빈 이름 미지정 시 클래스 이름의 첫글자를 소문자로 바꾼 이름으로 지정됨.
스프링의 클래스경로 스캐닝(classpath scanning)을 활성화해서 빈 생성 어노태이션이 설정된 클래스를 자동으로 등록함
- @Component
- @Service (@Component로 메타 애너테이션되어 있음)
- @Controller (@Component로 메타 애너테이션되어 있음)
- @Repository(@Component로 메타 애너테이션되어 있음)
[의존관계 자동 연결]
빈 인스턴스 생성 후 의존관계 주입 어노테이션이 설정된 메서드가 자동으로 호출됨
스프링 4.3부터 빈 클래스에 생성자가 하나인 경우, @Autowired를 설정할 필요 없음 (스프링 컨테이너는 디폴트로 유일한 생성자에 대한 자동 연결을 수행함)
@Autowired
@Inject (JSR 330)
[지정자를 통한 의존관계 명시적 연결]
@Qualifier
@Named (JSR 330)
@Resource (JSR 250) : 필드와 세터 메서드를 빈 이름으로 자동 연결 지원
- 흥미로웠던 부분
타입 지정 컬렉션(Typed Collection)을 통해 지정자와 연관된 모든 빈을 자동으로 연결할 수 있음
... @Component public class Services { @Autowired @Qualifier("service") private Set<MyService> services; ... }

이런식으로 JPA가 @Entity나 @Repository가 설정된 클래스 객체들을 생성하지 않을까?
커스텀 지정자 애너테이션 만들기 (흥미롭)
@Target({ElementType.FIELD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @Qualifier // 커스텀 지정 애노테이션 public @interface Transfer { BankType bankType(); }
@Component public class TransferProcessor { @Autowired @Transfer(bankType = BankType.SAME_BANK) private TransferService transferSameBack; @Autowired @Transfer(bankType = BankType.DIFFERENT_BANK) private TransferService transferDifferentBack; }
스프링 객체 검증(Validate)
- 스프링 Validator 인터페이스 사용
- supports()
- validate()
특징 ⇒ 제약 사항 정보가 validator에 구현됨
- JSR 380(빈 검증 2.0) 애너테이션 사용
- 의존 주입 필요(JSR 380 API jar, 하이버네이트 검증기 프레임워크)
스프링의 LocalValidatorFactoryBean 클래스가 스프링 Validator 인터페이스와 JSR 380의 인터페이스(의존성이 존재한다면)를 구현함
[흥미로웠던 부분]
- JSR 380 제약 사항이 적용된 클래스나 인터페이스를 상속받으면, 자식에게도 제약사항이 상속된다.
- JSR 380 제약사항을 만족하지 못한 경우 ConstraintViolationException 예외가 발생한다.
try { // JSR 제약사항이 적용된 메서드 호출 customerRequestService.submitRequest(...); } catch (ConstrainViolationException ex) { printValidationErrors(ex); }
이해 안가는 부분
- p254. 스프링 컨테이너는 디폴트로 유일한 빈 생성자에 대해 자동 연결을 수행하므로, 유일 생성자에 대해 @Autowired를 설정할 필요가 없다. => IoC는 대상 클래스가 Bean일 경우에만 유일 생성자를 무조건 실행해주는 건가?
'리뷰' 카테고리의 다른 글
[강의 리뷰] React Native, Expo, Geolocation로 간단한 날씨앱 만들기 (0) | 2020.12.30 |
---|---|
[컨퍼런스 리뷰] DEVIEW 2020 - 오픈 소스 활동을 시작하기 위한 작은 가이드 (0) | 2020.12.21 |
[책 리뷰] 비추 후기 - 배워서 바로 쓰는 스프링 프레임워크 (0) | 2020.08.19 |
[책 리뷰] 강추 후기 - 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 (0) | 2020.07.16 |
[책 리뷰] 엘라스틱서치 실무 가이드 (0) | 2020.04.04 |
댓글
이 글 공유하기
다른 글
-
[컨퍼런스 리뷰] DEVIEW 2020 - 오픈 소스 활동을 시작하기 위한 작은 가이드
[컨퍼런스 리뷰] DEVIEW 2020 - 오픈 소스 활동을 시작하기 위한 작은 가이드
2020.12.212020 DEVIEW에서 진행한 발표 내용 중 '오픈 소스 활동을 시작하기 위한 작은 가이드'를 듣고 내용을 정리했다. 회의가 있어서 사실 강의 초반은 듣지 못하고 4번 목차, 기여할 거리 찾기 부터 들었다^^; 발표자는 NAVER의 고상우 님이다. 목차 안내 : deview.kr/2020/sessions/366 오픈 소스 활동을 시작하기 위한 작은 가이드 발표자 : 고상우 deview.kr 목차1. 오픈 소스 활동 오픈 소스 구성원 오픈 소스와 커뮤니티 오픈 소스 활동 오픈 소스 활동 사이클 2. 프로젝트 찾기 내가 잘 알고 좋아하는 프로젝트 왜 기여하려고 하는가 나와 궁합이 맞는 프로젝트 유명한 프로젝트 공개되어있다고 기여하기 좋은 것은 아니다 기여하기 좋은 프로젝트의 신호 큐레이팅 서비스 오픈 소스… -
[책 리뷰] 비추 후기 - 배워서 바로 쓰는 스프링 프레임워크
[책 리뷰] 비추 후기 - 배워서 바로 쓰는 스프링 프레임워크
2020.08.19도서명 : 배워서 바로 쓰는 스프링 프레임워크 도서정보 : https://www.hanbit.co.kr/store/books/look.php?p_code=B6796857324 비추 예제 불친절 본문과 예제의 흐름 자연스럽지 못함 스프링에 대한 지식 정보는 문제가 없으나(일단 나는 스프링 지식의 깊이를 판단할 수 있는 수준이 아님) 인상쓰면서 보게 됨 나는 이 책을 샀으니 완독할거지만 추천하지는 않겠음 지식을 즐겁게 배울 수 있는 책을 고르기 바람 -
[책 리뷰] 강추 후기 - 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
[책 리뷰] 강추 후기 - 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
2020.07.16스프링 부트와 AWS로 혼자 구현하는 웹 서비스 완독 리뷰 후기를 올린다.책을 구매했을 때에는 저자가 '기억보다 기록을' 블로그를 하시는 이동욱님인 줄 몰랐다. (블로그 감사히 보고 있습니다.) Spring Boot를 쓰는 회사에 이직하게 되면서 당장 프로젝트를 시작해야하는 상황이었다. 보름 정도는 업무 설명을 듣고, 환경 설정, 소스 훑으면서 조그마한 수정을 하며 알음알음 알아갔다. 이렇게는 안되겠다 싶어서 당장 개발에 도움이 될 만한 실습 책을 알아보기 시작했다. 회사에서 사용하는 스펙이 들어간 키워드 springboot, lombock, gradle, jpa, aws 등이 포함된 스프링 부트 책을 찾다가 발견했다. (박수)후기 바로 간다. 1. 저자의 정성이 느껴지는 친절하고 매끄러운 예제사실 프로… -
[책 리뷰] 엘라스틱서치 실무 가이드
[책 리뷰] 엘라스틱서치 실무 가이드
2020.04.04책 내용은 좋았다! 다만 해당 책의 엘라스틱 버전이 낮고, 엘라스틱서치에서 한국 전파자(?)이신 김종민님의 책도 있으니 꼭 해당 책을 고집할 필요는 없어보인다. 그리고 엘라스틱서치 자체에서 예약어의 의미를 혼용해서 사용하고 있어서 다소 헷갈리는데 이 책의 문제는 아니다. 그냥 엘라스틱서치가 이렇게 생겨먹은 것 같다. 스터디 시작 : 2020년 3월 엘라스틱서치(ElasticSearch) 공부를 위해 스터디를 진행한 지 보름 정도가 되었다. 스터디 책 : 엘라스틱서치 실무 가이드 엘라스틱서치 실무 가이드 - YES24 『엘라스틱서치 실무 가이드』는 오픈소스 검색엔진의 대표 주자인 엘라스틱서치에 대한 전반적인 내용을 다룬다. 하지만 단순히 엘라스틱서치의 기능을 단편적으로만 설명하고 끝내는 것이 www.yes…
댓글을 사용할 수 없습니다.