본문 바로가기
==6. 책 공부==/북스터디

[북스터디]스프링 프레임워크 첫걸음 1주차

by Dohi._. 2024. 10. 20.
728x90

목차

01장 스프링 프레임워크

프레임 워크 : 개발을 편하게 해주는 뼈대

스프링 프레임워크 (스프링): 자바 개발환경의 프레임워크


스프링 구성

  • 스프링부트
    • 스프링 애플리케이션을 빠르게 작성 제공
  • 스프링 프로젝트
    • 스프링 MVC :MVC (모델- 뷰 -컨트롤러) 웹 application 간단 생성 
    • 스프링 데이터 : 데이터 접근에대한 기능
    • 스프링 배치 : 배치 처리 기능
    • 스프링 시큐리티 : 인증/허가 기능 
    스프링 코어 
    • 스프링 DI : DI(의존성 주입) 기능
    • 스프링 AOP : AOP (관점지향 프로그래밍) 기능

 02장 기초 지식 배우기

  • 인터페이스
    • 구체적인 내용을 작성하지 않고 상수와 메서드 타입만 정의한다.
    • 다른 클래스에서 구현하는 것을 전제로 만든다(implements)
    • 메소드를 상속/구현 하여 재구현 하는 것을 Override라고 하며 @Override를 붙인다.
  • 컬렉션 :자바의 배열와 달리 길이에 제약이 없어 복수의 데이터를 쉽게 사용
    • 리스트 :순서대로 저장 / 중복X
      • ArrayList :검색에 유리
      • LinkedList : 추가/삭제유리
    • 세트:순서유지X/ 중복X
    • 맵 : 한쌍으로 관리(키 - 값 ) / 순서X / 키 중복X 값 중복 O 

웹 지식

  • HTTP통신
    • 클라이언트 - 웹서버간의 HTTP 요청과 응답으로 상호작용하는 것
  • GET / POST
    • http 요청의 한 유형
    • GET - 브라우저에서 웹서버로 값을 전달할때 URL뒤에 값(query string)을 보내는 방식 
    • POST - 브라우저에서 웹 서버에 값을 보낼때 요청본문(request body) URL에는 보이지 않는 장소에 값을 넣어서 보내는 방식
    • 둘의 차이를 모르겠다면 저는 이렇게 구분합니다 
      • Get : 주소로 바로 접속가능( 회사주식정보)
      • Post : 특정주소에서 요청해야 보이게함(로그인폼)

 03장 스프링 프레임워크의 핵심 기능 알아보기

의존성주입(Dependenct Injection)

의존하는 부분을 외부에서 주입을 의미

  • 의존성
    • 클래스A를 수정했더니  A를 사용하는 클래스Main이 수정해야할 경우 Main는 A에 의존한다. 
    • 클래스 의존 / 인터페이스 의존 나눠진다
  •  클래스 의존
    • Main에서 클래스 B의 메서드를 사용하고있을때 클래스 C의 메서드로 변경해야할때
    • 아래처럼 사용되는 객체를 바꿔준다 
    • 지금의 경우는 메소드도 동일하지만 규칙없이 작성하다보면 다양한 코드를 바꿔야하고 수정작업이 많아지게 된다.
main(){
 	//B action = new B();
 	C action = new c();
	action.eat();
}
  • 인터페이스 의존 
    • B와 C를 인터페이스로 추상화된 I를 쓴다고 했을경우 
    • 인터페이스에서 구현한 메소드 들이기 때문에 한곳만 수정하게 된다.
main(){
 	I action = new c(); //B();
	action.eat();
}

 

  • DI컨테이너
    • 위의 코드에서는 인스턴스를 생성할 때 각자 new를 사용하였다.
    • 스프링에서는 인스턴스 생성과 같은 작업을 DI 컨테이너가 생성한다.
    • DI컨테이너 사용 다섯가지 규칙
      • 인터페이스를 사용하여 의존성 제작
      • 인스턴스를 명시적으로 생성X (new X)
      • 어노테이션을 클래스에 부여
      • 스프링에서 인스턴스를 생성
      • 인스턴스를 이용하고 싶은곳에도 어노테이션 부여
      • 관련 어노테이션 
        @Controller 인스턴스 생성 지시, 컨트롤러에 부여
        @Service 인스턴스 생성 지시, 트랜잭션 경계가 되는 도메인(서비스) 기능에 부여
        @Repository 인스턴스 생성 지시, 레포지토리에 부여
        @Component 위 용도 이외의 클래스에 부여
        @Autowired 인스턴스를 이용하는 클래스에 참조를 받는 필드를 선언하고 필드에 부여

관점 지향 프로그래밍( Aspect Oriented Programming)

  • AOP의 두요소
    • 중심적 관심사 (구현하고 싶은 프로그램) : 구현해야할 기능 
    • 횡단적 관심사 (부수적 프로그램) : 본질적인 기능이 아니지만 품질, 유지보수등의 관점에서 꼭 필요한 기능
    • 횡단적 관심사를 분리하여 기존 코드를 수정하지 않아도 공통 처리를 위한 기능을 추가 할 수 있게 한다.
  • AOP 고유용어
      
    Advice 횡단적 관심사의 구현
    Aspect 어드바이스를 정리한 것(클래스)
    JoinPoint 어드바이스를 중심적인 관심사에 적용하는 타이밍
    Pointcut 어드바이스를 삽입할 수 있는 위치
    Interceptor 처리의 제어를 인터셉트하기 위한 구조 또는 프로그램
    Targer 어드바이스가 도입되는 대상
728x90

댓글