안녕하세요 한희성입니다.
오늘부터 그냥 닉네임 안쓰고 이름 쓰기로 결정했습니다 ㅋㅋ 매번 입으로 말하면서 적기도 뭐하고그래서..
오늘은 90분짜리 백기선님의 입문강좌를 듣고 스프링에 대한 포스팅을 작성하려고합니다.
대학다닐 때 C, JAVA 등 깊게 배우지도, 관심도 많지 않았기 때문에 3년이 지난 아직까지도 웹 개발을 하면서 늘...
기초가 약한것에 대한 컴플렉스를 가지고 있습니다. 물론 책도 보고 꾸준한 자기 개발도 하지만 만족스럽지 못했는데..
우연히 인프런이라는 온라인 강좌 사이트를 발견 !! 무료로 수강할 수 있는 과목들이 너무나도 다양해서 좋았습니다 ㅋㅋ
바로 스프링프레임워크 입문 강좌 수강!!! 무료 강좌 보러가기! 원하는 과목 검색하셔서 수강하시면 됩니다~
스프링 프레임워크 입문!
각각의 강좌들을 나열하고 제목에 대한 학습 내용을 적도록 하겠습니다.
1. 강의 소개 및 프로젝트 셋팅
* Spring Boot 프로젝트를 기준으로 강의
2. IoC(Inversion of Controll)
2-1 IoC 소개
* 컨틀롤이 인버젼 됐다, 즉 제어의 역전 ~ 무슨뜻이냐 ~~하면 ~
* 스프링을 사용하지 않았더라면 일반적인 객체는 New 생성자를 이용하여 객체를 생성.
하지만 스프링을 사용함으로써 DI 의존성주입을 통하여 스프링내부에서 미리 생성해놓은 객체를 사용할 수 있다.
2-2 IoC 컨테이너
* 스프링프레임웍은 IoC 용 컨테이너를 제공하고 그 인터페이스를 제공하는 핵심적인것이 바로 아래
* applicationContext(BeanFactory) = IoC container 라고도 불린다.
* Bean을 만들어 주고 엮어준다.
* IoC 컨테이너가 하는일은 Bean으로 등록된 객체들을 관리하고 동작시켜준다.
a. 그럼 어떤것이 Bean 일까? 어노테이션이 붙어있는 것들이 Bean 으로 등록되며 IoC 컨테이너 내부에서 객체들을 관리하며 의존성을 주입시켜준다. 이것이 컴포넌트 스캔이라는 방법 !
2-2 Bean
* 스프링 IoC 컨테이너가 관리하는 객체
* 스프링에 Bean 등록하는 방법은 크게 두가지
a. Component Scanning
- spring boot로 프로젝트를 만들었기 때문에 기본으로 @springBootApplication 붙은 클래스가 반드시존재
- 이 어노테이션의 코드를 따라가보면 @컴포넌트스캔이 있다. 이 컴포넌트스캔의 역할은 자기의 최상단 패키지 부터 모든 클래스를 검사하며 @컴포넌트스캔이 붙어있는 클래스를 검사하여 bean 으로 등록한다. 이것을 컴포넌트스캔 방법이라한다. @컨트롤러 어노테이션도 마찬가지로 소스를 열어보면 @컴포넌트스캔을 포함하고있다.
b. 직접 등록
- 반드시 @Configuration 이 붙어있는 클래스에 작성해야 하며, @SpringBootApplication 는 위 어노테이션을 포함하고있다.
-@Bean 어노테이션을 붙인 후 메서드의 이름이 Bean 이름이 된다.
-@Bean
public String hanTest() {
return "heeseong";
}
- @Autowired String hanTest;
* 실제 어노테이션에 직접적인 기능은 없다. 마커로 사용되며 이 마커를 보고 처리하는 프로세서들이 스프링 내부의 핸들러들이 어딘가에 존재한다.!
2-3 의존성 주입
* 생성자, 필드, Setter
* 스프링5 부터 컨트롤러의 생성자가 오직 하나만 있고 그 생성자가 파라메로 갖는 타입이 빈으로 등록 되어있다면
@Autowired 없이 자동 주입이 된다.
* 해당 컨트롤러의 필수 값들이라면 (ex : service) 생성자에 등록하는 것을 추천
* 그렇지 않다면 필드에 작성을 추천
* Setter 가 존재한다면 Setter에 붙여라
3. AOP(Aspect Oriented Programming)
3-1 AOP 소개
* 흩어진 코드를 한 곳으로 모아서 코딩해라가 핵심
* 프록시 패턴
* 코딩기법
4. PSA(Portable Service Abstraction)
4-1 PSA 소개
* 잘 만든 인터페이스
* 확장성 좋은 코드
'공부 이야기 > 토비의 스프링' 카테고리의 다른 글
[토비의 스프링] TDD, TFD (0) | 2019.07.11 |
---|---|
스프링 창시자 로드 존슨 (0) | 2019.07.11 |
프레임워크, 라이브러리의 차이 (0) | 2019.07.09 |
[20180813] DAO/ VO (0) | 2018.08.13 |
[20180813] 단위테스트를 하자 (0) | 2018.08.13 |
댓글